当在大文件中查找一行数据时,使用grep帮助查找
grep [option] pattern [file]
或者借助管道筛选输出结果ls | grep test
1. 正则表达式
1. posix基础正则表达式 (BRE) 引擎
- 点字符号
.
可以指代任意字符 - 锚字符
$ ^
- 字符组
[Yy] [a-z] [A-Z] [0-9]
- 排除型字符组
[^Yy]
- 星号
*
字符后面放置的星号表示该字符必须在匹配模式的文本中出现0次或多次
2. posix扩展正则表达式 (ERE) 引擎
- 问号
?
字符后面放置的问号表示该字符必须在匹配模式的文本中出现0次或1次 - 加号
+
字符后面放置的加号表示该字符必须在匹配模式的文本中出现1次或多次 - 管道符号
|
如果任意一个模式匹配了数据流文本,文本就通过测试exp: [cat|dog]
- 花括号
{}
为可重复的正则表达式指定一个上限{m}
正则表达式准确出现m次{m, n}
正则表达式至少出现m次,至多出现n次
- 分组
()
2. 我遇到的问题
Pattern Syntax
-E, --extended-regexp
Interpret PATTERNS as extended regular expressions
(EREs, see below).
或者使用egrep
- 当在使用
{}
时,匹配到了多次重复的值,并不是准确的重复n次
文档中这样说到{n} The preceding item is matched exactly n times.
- 问题在于:tetete.txt 中 te重复了三次,但是这三次可以看作三个一次,所以te匹配了一次,其他俩个te各自匹配了一次,所以这个字符串符合{3}这个模式
- 如此说来,以下这中情形就好懂了: