前面学习的grep可以读取文件,并进行查找处理,实际上grep也可以处理来自于管道的字符串。如rpm -qa|grep ‘http’ 或ls –latr |grep ‘^d’ 。从管道得到输入的grep 命令格式是grep -选项 ‘正则表达式’,其中正则表达式同普通的grep命令是一样的包括^,$,\<,\>,[]等。讲到grep,同时我们也要学习一下egrep,egrep 就是extended grep,其实还有一种叫fgrep。 egrep作为一个扩展grep,它是对正则表达式扩展了一些元字符。扩展的元字符如下:
+ | 匹配一个或多个+前的字符 | '[a-z]+ove’ | 匹配一个或多个小写字符,后面跟上ove,可以是move,approve,love,behoove等,与前面学的*号类似,但*可以是零个。 |
? | 匹配零个或一个前导符 | 'lo?ve’ | 匹配l后面接零个或者一个前导符,比喻love或者lve,与*号类似 |
a|b | 匹配a或者b | 'love|hate’ | 匹配含有字符love或者hate的表达式 |
() | 组字符 | 'love(able|ly)’ '(ov)+’ | 匹配lovable和lovely 匹配一个或多个连续的ov |
注意这里面两个新的元字符区别在于零个和一个和一个以上,并且它们都不是通配符,而是前导符。
前面学习了egrep是扩展grep,而fgrep通译为fixed grep或称之为fast grep,语法同grep一样,但不认识正则表达式。