前面学习的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

注意这里面两个新的元字符区别在于零个和一个和一个以上,并且它们都不是通配符,而是前导符。

Linux Shell 基本概念及编程(4)_第1张图片

前面学习了egrep是扩展grep,而fgrep通译为fixed grep或称之为fast grep,语法同grep一样,但不认识正则表达式。

Linux Shell 基本概念及编程(4)_第2张图片