一、grep:global search regular expression and print out the line.
文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行
格式:grep [option] 'PATTERN' file1,...其中PATTERN为正则表达式。
--color=auto:匹配的行高亮显示
-v:反向匹配,显示不能被模式所匹配的行
-o:仅显示被匹配的内容,而非整行
-i(ignore-case):不区分字符大小写
-A n:显示匹配行并显示下面的n行
-B n:显示匹配行并显示下面的n行
-C:显示匹配行的上下文
其正则表达式:
1、字符匹配:
.:任意单个字符
[]:指定范围内的任意单个字符
[0-9]:
[a-z]:
[A-Z]:
[^]:指定范围外的任意单个字符
2、次数匹配:用来指定匹配器前面的字符的次数
*:任意次数
.*:匹配任意长度的任意字符
\?:0次或1次
\{m\}:匹配m次
\{m,n\}:匹配m到n次
\{m,\}:匹配至少m次
\{m,n\}:匹配最多n次
3、位置锚定:用来指定字符出现的位置
^:锚定行首
$:锚定行尾
^$:空白行
例子:
统计/etc/rc.d/rc.sysinit中以bash结尾的行
grep --color=auto 'bash$' /etc/rc.d/rc.sysinit
统计/etc/rc.d/rc.sysinit中空行数
grep --color=auto '^$' /etc/rc.d/rc.sysinit |wc -l
\<char:锚定词首
例子:/etc/passwd以r开头的行
grep --color=auto '\<[Rr][^[:punct:]]*[Tt]' /etc/passwd
char\>:锚定词尾
例子:\<h..o\>匹配以h开头以o结尾中间包含任意两个字符的单词
4、\(\):分组
例子:^\(ab\)*xy$:匹配以ab开头,以xy结尾,中间位包含任务ab
5、引用:
\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹到的内容
\2:
......
例如:\(a.b\)xy\1,他可以匹配abxyab a6bxya6b ,a6bxya7b不可匹配
例:显示/proc/meminfo文件中以大小写s开头的行
#grep "^[sS]" /proc/meminfo
#grep -i "^s" /proc/meminfo
例:取出默认shell为非bash的用户
#grep -v "bash$" /etc/passwd |cut -d: -f1
例:取出默认shell为bash且其ID号最大的用户
#grep "bash$" /etc/passwd|sort -n -t: -k3|tail -1|cut -d: -f1
例:显示/etc/rc.d/rc.sysinit文件中,以#开头,后面个至少各一个空白字符,而后又有至少一个非空白字符的行
#grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit
例:找出/etc/passwd文件中一位或者两位数
#grep --color=auto "\<[0-9]\{1,2\}\>" /etc/passwd
例:找出netstat -tan 命令执行的结果中以"LISTEN"结尾的行
netstat -tan |grep --color "LISTEN[[:space:]]*$"
例:找出netstat -tan 命令执行的结果中以"LISTEN"或者"ESTABLISHED"结尾的行
二、egrep:使用扩展正则表达式类构建模式:相当于grep -E
其正则表达式:
1、字符匹配:
.:任意单个字符
[]:指定范围内的任意单个字符
[0-9]:
[a-z]:
[A-Z]:
[^]:指定范围外的任意单个字符
2、次数匹配:用来指定匹配器前面的字符的次数
*:任意次数
.*:匹配任意长度的任意字符
+:匹配其前面的字符至少一次。
?:0次或1次
{m}:匹配m次
{m,n}:匹配m到n次
{m,}:匹配至少m次
{m,n}:匹配最多n次
3、位置锚定:用来指定字符出现的位置
^:锚定行首
$:锚定行尾
^$:空白行
例子:
统计/etc/rc.d/rc.sysinit中以bash结尾的行
grep --color=auto 'bash$' /etc/rc.d/rc.sysinit
统计/etc/rc.d/rc.sysinit中空行数
grep --color=auto '^$' /etc/rc.d/rc.sysinit |wc -l
\<char:锚定词首
例子:/etc/passwd以r开头的行
grep --color=auto '\<[Rr][^[:punct:]]*[Tt]' /etc/passwd
char\>:锚定词尾
例子:\<h..o\>匹配以h开头以o结尾中间包含任意两个字符的单词
4、():分组
例子:^\(ab\)*xy$:匹配以ab开头,以xy结尾,中间位包含任务ab
|:或者
5、引用:
\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹到的内容
\2:
......
例如:\(a.b\)xy\1,他可以匹配abxyab a6bxya6b ,a6bxya7b不可匹配
例:找出netstat -tan 命令执行的结果中以"LISTEN"或者"ESTABLISHED"结尾的行
netstat -tan |egrep --color "(LISTEN|ESTABLISHED)[[:space:]]*$"
例:找出ifconfig命令执行的结果中的1到255质检的整数
#ifconfig |grep -E --color=auto "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|>"
三、fgrep:其中f为fast,不解析正则表达式。
本文转自lzf0530377451CTO博客,原文链接:http://blog.51cto.com/8757576/1547102 ,如需转载请自行联系原作者