grep命令的使用

一、简介(Global Regular Expression Print)

  grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印到标准输出。如果指定了多个文件,会在每一行前面显示文件名。并不影响原文件内容。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。


二、格式

grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

 

三、grep 正则表达式元字符集

1.基本集其实跟 sed 差不多,随便列一下吧:

^   $   .   *    []   [^]   \(..\)   \<   \>   x\{m,n\}   x\{m\}   x\{m,\}
\w #匹配文字和数字字符,也就是[A-Za-z0-9]
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等
\b #单词锁定符,如: ‘\bgrepb\’只匹配grep

2.用于 egrep 和 grep -E 的元字符扩展集

+           #匹配前一个字符一次或多次
?           #匹配前一个字符0次或1次  
a|b|c          #可选模式,匹配a或b或c,如:love(able|rs)匹配loveable或lovers
()          #分组符号,如:(ov)+,匹配一个或多个ov 
x{m},x{m,},x{m,n}  #作用同x\{m\},x\{m,\},x\{m,n\}

3.POSIX字符类

为了在不同国家的字符编码中保持一至,POSIX增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。

[:alunm:]    [:alpha:]    [:digit:]    [:space:]    [:upper:]     #等等

 

四、grep 常用命令选项:

-v                                #反检索,只显示不匹配的行
-l #打印匹配模板的文件清单
-L #打印不匹配模板的文件清单
-n #在匹配的行前面打印行号
-2 #grep -2 pattern filename 同时显示匹配行的上下2行
-c #只打印匹配的行数,不显示匹配的内容
-f #从文件中提取模板。空文件中包含0个模板,什么都不匹配
-h #当搜索多个文件时,不显示匹配文件名前缀
-i #忽略大小写差别
-w #如果被\<和\>引用,就把表达式做为一个单词搜索

 

五、使用举例

测试文件:

cat filename
f
f3
f33
f333
f3333
f1
f31
f2
f32
f323
f

1.显示包含 33 的行

grep '33' filename
f33
f333
f3333

2.至少包含三个数字的行

grep '[[:digit:]]\{3,\}' filename
f333
f3333
f323

3.匹配 3 一次以上的行:

grep 'f3\{1,\}' filename

f3
f33
f333
f3333
f31
f32
f323

4.匹配 f 后跟一个以上 3 的行

grep 'f3\{1,\}\>' filename
f3
f33
f333
f3333

 5.匹配 f 后跟偶数个 3 

grep -E 'f(33)+\>' filename
f33
f3333

 

posted @ 2012-04-01 17:44  xiangzi888  阅读(427)  评论(0编辑  收藏  举报