shell三剑客之grep

  • 前言

grep怎么出来的?

  这就需要我们庖丁解牛了,“g/RE/p”看到没,就是这样“global Regular Expression print”==>“全局查找正则表达式(RE)并且打印结果行。”

  grep家族由命令grep,egrep和fgrep组成。后两者是前者的变体。一个胖了,一个瘦了而已。

  使用grep的好处就在于,不需要启动编辑器就可以执行查找操作,也用不着把pattern放在“//”里,使用grep要比vi快的多,并且还多了许多命令行选项。

  •  格式

  grep -option 'pattern' filename 或者 

  |grep -option 'pattern'

  • grep的正则表达式元字符

  见上文shell之正则表达式:

http://1076546426.blog.51cto.com/9959876/1702784

  • grep选项

选项
功能
-b 在每行前面加上其所在的块号,根据上下文定位磁盘块时可能会用到
-c 显示匹配到的行的数目,而不显示行的内容
-h 不显示文件名
-i 匹配字符时忽略大小写
-l 只列出匹配行所在文件的文件名(每个文件名只列一次),文件名之间用换行符分隔
-n 在每一行的前面加上它在文件中的相对行号
-s 无声操作,即只显示报错信息,以检查退出状态
-v 反向查找,只显示不匹配的行
-w 把表达式作为词来查找,只适用于grep。=====\<\>

注:更多选项请查看:grep -h 或者 man grep

  • egrep新增元字符

元字符
功能
+ 匹配一个或多个+号以前的字符
? 匹配1个或0个前导字符
a|b 匹配a或b
() 字符组

思路拓展:

示例 注解
'[a-z]+ove' 匹配1个或多个字母后跟ove的字符串
'lo?ve' 匹配l后跟ove或ve的字符串
'love|hate' 匹配love和hate这两个字符串之一
'love(able|ly)' 匹配loveable或lovely