\> 词尾定位符 'love\>' 匹配包含以love结尾的词的行
\(..\) 标记匹配到的字 '\(love\)ing' love被保存在1号寄存器里,可以用\1来引用它
符
x\{m\} 字符x的重复出现 'o\{5\}' 匹配连续5个o
次数
x\{m,\} m次,至少m次 'o\{5,\}' 匹配至少5个o
x\{m,n\} 至少m次但不超过n次 'o\{5,10\}' 匹配5-10个o
grep 的选项
-b 在每一行前面加上其所在的行号
-c 显示匹配到的行的数目,而不是显示行的内容
-h 不显示文件名
-i 比较字符忽略大小写的区别
-l 只列出匹配行所在文件的文件名(每个文件名只列以次),文件名之间用换行符分割
-n 在每一行前面加上它所在文件中的相对行号
-s 无声操作,即只显示报错信息,以检查退出状态
-v 反向查找,只显示不匹配的行
-w 把表达式作为词来查找
-a 将二进制文件当文本文件处理
-e
-f FILE 从FILE中获得匹配的模式,每行一个,grep将从目标文件中查找与FILE中模式匹配的行
例如:
cat file01
north
west
root
green
file01中包含了north,west,root,green 四个模式
grep -f file01 datafile
grep将从file01中获取查找模式,与datafile 中的行进行匹配
-L 仅打印所有未能匹配模式的文件名
-m NUM 如果文件是标准输入或正规文件,在找到指定数量 NUM 的匹配行后停止读文件
-C 打印匹配行的前2行和后2行的内容,等同于 -2
例如:
grep -2 north datafile
grep -C north datafile
-A NUM 打印匹配行后面NUM行的内容:即匹配行及它后面指定NUM行的内容
例如:
grep -A 2 north datafile
查找匹配north模式的行后,显示该行及其后两行的内容
-B NUM 打印匹配行前面NUM行的内容:即匹配行及它前面指定NUM行的内容
例如:
grep -B 2 north datafile
查找匹配north模式的行后,显示该行及其前两行的内容
(NUM 是用来代表整数值的符号)
-x 仅选择精确匹配正行的哪些匹配
-Z 在文件名的末尾放上ASCII空字符以取代换行符
举例:
1. grep NW datafile 打印文件datafile中所有包含正则表达式NW的行
2. grep NW d* 打印所有以d开头的文件中,包含正则表达式NW的所有行
3. grep '^n' datafile 打印所有以n开头的行
4. grep '4$' datafile 打印所有以4结尾的行
5. grep TB Savege datafile grep 在文件Savege和datafile中查找TB
6. grep '5\..' datafile 打印所以包含数字5,后跟一个据点,再跟任意一个字符的行
7. grep '\.5' datafile 打印所有包含表达式“.5”的行
8. grep '^[we]' datafile 打印所有以字母w或者e开头的行
9. grep '[^0-9]' datafile 打印包含非数字字符的所有行
10.grep '[A-Z][A-Z] [A-Z]' datafile 打印所有包含两个大写字符,后跟一个空格和一个大写字符的行
11.grep 'ss* ' datafile 打印包含一个s,后跟0个或者多个连着的s和一个空格的文本行
12 grep '[a-z]\{9\}' datafile 打印至少9个小写字符连在一起的行
13.grep '\(3\)\.[0-9].*\1 *\1' datafile
打印包含一个3后跟一个句点和一个数字,再跟任意多个字符(.*),然后跟一个3,和任意多个制表符,再跟一个3 的行
14.grep '\
15.grep ‘\’ datafile 打印所有包含单词north 的行
16. grep '\<[a-z].*n\>' datafile 打印包含以小写字母开头,后跟任意多个字符,以n结尾的单词的行
17. grep 'green' datafile01 datafile02
grep 将在datafile01 和datafile02 中查找匹配模式green的行,并且在匹配的行前加上查找的文件名
选项举例
grep -l 'SE' *
只输出包含模式SE的 文件名,而不输出文本行
扩展的grep,即egrep
egrep 使用的正则表达式和grep 一样,只是多了下面几个
+ 匹配一个或多个加号前的字符 '[a-z]+ove' 匹配一个或者多个小写字母后跟ove的字符串
将找出:move approve love behoove等字符串
? 匹配零个或一个前导字符 'lo?ve' 匹配字母l后跟一个或零个字母o以及ve的字符串
将找出:love lve等
a|b 匹配a或b 'love|hate' 匹配love和hate这两个表达式之一
() 字符组 'love(able|ly)(ov)+' 匹配lovable 或 lovely
匹配ov的一次或多次出现
举例
egrep 'NW|EA' datafile 打印包含表达式NW或EA的行
egrep '3+' datafile 打印包含一个或多个数字3的行
egrep '2\.?[0-9]' datafile 打印包含数字2,后跟零个或一个句点,在跟一个数字的行
egrep '(no)+' datafile 打印连续出现一个或多个模式组no的行,将匹配 no,nono,nononononono等
egrep 'S(h|u)' datafile 答应你所有包含字母S,后跟h或者u的行
egrep 'Sh|u' datafile 打印所有包含表达式Sh或u的行
GNU 版本的grep 正式表示元字符基本集
\w 所有字母和数字,称为[A-Za-z0-9] l\w*e
\W 所有字母和数字之外的字符,称为非字符 [^A-Za-z0-9] love\W+
\b 词边界 \blove\b 仅匹配love 这个单词
grep 'pattern' filename 基本的RE元字符
grep -G 'pattern' filename 含义同上
grep -E 'pattern' filename 扩展RE元字符
grep -F 'pattern' filename 非RE元字符
grep -P 'pattern' filename 将模式解释为perl RE
递归的grep
grep -r 'tom' /
在根目录及其子目录中寻找包含tom的所有文件
阅读(4957) | 评论(0) | 转发(1) |