grep 高级例解

来源:互联网 发布:tensorflow 图片 编辑:程序博客网 时间:2024/06/04 19:39

grep 是在linux查找文本过程最常用的命令,熟悉grep的一些常用命令,可以在个别时候有效提高工作效率。


场景一:需要查找一个目录及子目录所有文件中出现 aaa 但是同时不能出现bbb的行,查找不区分大小写


grep -rin 'aaa'|grep -v  bb


解释:

r 递归查找

i 不区分大小写

n 显示行号

v  反向匹配(形象点就是不允许出现的)


场景二:待查找的文件有几千万行,你的规则有几百条


grep -f patter.txt file

f :后跟规则文件,把每条正则表达式写入patrern.txt中

场景三:你需要使用linux扩展正在表达式

grep -E pattern file

默认情况下grep只支持基础正在表达式,E选项可以支持扩展表达式(也可以待地gerp -E 为egrep)

什么是扩展正在表达式?

linux扩展正在表达式 是在原有标准正则表达式

+    重复一个或者一个以上的前一个字符,如a+表示一个以上的a
?    0个或者1个前一个字符,如a?表示空白或者1个a
|    或,如要查找aa或者bb这两个字符串,egrep -n 'aa|bb  file
()    查找组字符串,如查找head或者had, egrep -n 'h(ea|a)d' file
()+    多个重复组的判别,如查找A开头C结尾,中间有一个以上的xyz或aaa,egrep -n 'A(xyz|aaa)+C' file


场景四:你想看到被匹配的行周围(前后)的行

grep -A2  -B2  'aaa'  file

-A :after,显示匹配行后的行 -A2 显示 后2行

-B :before,显示匹配行前的行 -B2 显示 前2行

如果你真的同时需要显示,前后各n行,那么你可以用-C选项

grep -C2 'aaa' file 作用与-A2 -B2完全相同




'



原创粉丝点击