Preface
grep
用了很久,不过以前我用得一直很浅显,就是简单的grep xxx
。本文对其他用法做下记录
或操作
找出文件(filename)中包含123或者包含abc的行
-E
将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
1
| grep -E '123|abc' filename
|
与操作
显示既匹配 pattern1 又匹配 pattern2 的行。
1
| grep pattern1 files | grep pattern2
|
在多个文件中查找
1
| grep "match_pattern" file_1 file_2 file_3 ...
|
标记匹配颜色 –color=auto 选项:
1
| grep "match_pattern" file_name --color=auto
|
搜索多个文件并查找匹配文本在哪些文件中
1
| grep -l "text" file1 file2 file3...
|
在多级目录中对文本进行递归搜索
1 2
| # .表示当前目录。 grep "text" . -r -n
|
grep静默输出
1 2
| #不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试。 grep -q "test" filename
|
在grep搜索结果中包括或者排除指定文件
1 2 3 4 5 6 7 8
| #只在目录中所有的.php和.html文件中递归搜索字符"main()" grep "main()" . -r --include *.{php,html}
#在搜索结果中排除所有README文件 grep "main()" . -r --exclude "README"
#在搜索结果中排除filelist文件列表里的文件 grep "main()" . -r --exclude-from filelist
|
打印出匹配文本之前或者之后的行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #显示匹配某个结果之后的3行,使用 -A 选项: seq 10 | grep "5" -A 3 5 6 7 8
#显示匹配某个结果之前的3行,使用 -B 选项: seq 10 | grep "5" -B 3 2 3 4 5
#显示匹配某个结果的前三行和后三行,使用 -C 选项: seq 10 | grep "5" -C 3 2 3 4 5 6 7 8
#如果匹配结果有多个,会用“--”作为各匹配结果之间的分隔符: echo -e "a\nb\nc\na\nb\nc" | grep a -A 1 a b -- a b
|
只显示全字符合的列
只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
综合使用场景
1 2
| #包含java不包含grep的进程 ps -ef |grep java|grep -v grep
|
参考链接