天天看点

grep 正则表达式

 1.作用

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户

正则表达式主要参数: 

^        行首定位符 

$        行尾定位符 

?        匹配任意单个字符 

*        匹配0或多个前一字符 

[]       匹配一组字符中的任意一个(单个字符) 

[^]      匹配不在指定字符组内的字符 

\<       词首定位符 

\>       词尾定位符 

\(..\)   标记匹配的字符 

\{ \}    重复出现的次数.  \{m\} \{m,\} {\m,n\} 

[[:alpha:]] 匹配字母    即[a-zA-Z] 

[[:upper:]] 匹配大写字母  即[A-Z] 

[[:lower:]] 匹配小写字母  即[a-z] 

[[:digit:]] 匹配数字    即[0-9] 

[[:alnum:]] 匹配数字与字母 即[0-9a-zA-Z] 

[[:space:]] 匹配空格或tab键    

[[:graph:]] 非空格 

2.格式

grep [options] 

3.主要参数

[options]主要参数: 

-NUM    :同时显示匹配行的上下NUM行 

-c   :只输出匹配行的计数 

-i   :不区分大小写 

-h   :查询多文件时不显示文件名 

-l   :查询多文件时只输出包含匹配字符的文件名 

-n   :显示匹配行及行号 

-s   :不显示不存在或无匹配文本的错误信息 

-v   :反检索,显示不包含匹配文本的所有行 

-r   :递归查询 

-E   :扩展(同egrep) 

--color :高亮显示匹配到的关键字 

[root@rhel5 data]# grep -2 xyz keyword               #显示包含xyz的行并同时显示其上下两行 

[root@rhel5 data]# grep xyz keyword*                    #显示所有以keyword开头的文件中包含xyz的行 

[root@rhel5 data]# grep xyz keyword1 keyword2 keyword3  #显示文件keyword1 keyword2 keyword3中包含xyz的行 

[root@rhel5 data]# grep -c xyz keyword               #显示keyword文件中包含xyz的行的个数 

[root@rhel5 data]# grep -h xyz keyword*              #显示所有以keyword开头的文件中包含xyz的行且不显示文件名 

[root@rhel5 data]# grep -l xyz keyword*              #显示所有以keyword开头的文件中包含xyz的文件名 

[root@rhel5 data]# grep -v a keyword                    #显示所有不包含a的行 

[root@rhel5 data]# grep -v "a\|b" keyword               #显示所有不包含a和b的行 

[root@rhel5 data]# grep -vE "a|b" keyword               #同上 

[root@rhel5 data]# grep [0-9] keyword                #显示包含数字的行 

[root@rhel5 data]# grep '[a-z]\{4\}' keyword            #显示所有包含每个字符串至少有4个连续小写字母的字符串的行 

[root@rhel5 data]# grep keyword /data/*              #在/data/目录下搜索包含字符串keyword的文件(显示文件的路径与包含keyword的行) 

[root@rhel5 data]# grep -r title /boot/*                #在/boot/目录及子目录下搜索包含字符串title的文件 

[root@rhel5 data]# grep '\<xy' keyword               #显示包含以xy开头的字符串的行(匹配xyz,而不匹配zxy) 

[root@rhel5 data]# grep [[:alnum:]] keyword             #显示包含字母和数字的字符串的行 

[root@rhel5 data]# grep [[:upper:]] keyword             #显示包含大写字母的字符串的行 

      本文转自Vnimos51CTO博客,原文链接:http://blog.51cto.com/vnimos/1042705,如需转载请自行联系原作者

继续阅读