Linux文本处理三剑客---grep
1.什么是grep和egrep
示例
grep [options] pattern [file...]
其中,pattern表示要搜索的模式,可以是简单的文本字符串,也可以是正则表达式。file指定要在其中进行搜索的文件,如果省略file,则默认从标准输入中读取数据。
egrep其实就是grep的一个变种,它支持更多的正则表达式语法。egrep实际上就是对grep命令的扩展,允许使用扩展的正则表达式语法,包括元字符如括号、问号、加号等。
egrep命令的用法与grep类似,只是在使用正则表达式时,egrep支持更多的特性。
例如,如果你想要搜索同时匹配"apple"或"orange"的行,可以使用egrep的语法:
egrep 'apple|orange' filename
而grep的话需要使用反斜杠转义符:
grep 'apple\|orange' filename
egrep = grep -E:扩展的正则表达式 (除了< , > , \b 使用其他正则都可以去掉\)
2.常用参数
-A<显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-B<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。
-C<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。
-c:统计匹配的行数
-e:实现多个选项间的逻辑or 关系
-E:扩展的正则表达式
-f FILE:从FILE获取PATTERN匹配
-F:相当于fgrep
-i:忽略大小写,即不区分大小写进行搜索。
-n:显示匹配的行号
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息
-s:不显示错误信息。
-v:反向搜索,只显示不匹配的行。
-w:仅匹配整个单词,而不是单词的一部分。
3.grep命令演示
[17:07:42 root@nginx ~]#grep -A2 b test.txt
bbbbb
ccccc
AAAAAA
[17:09:27 root@nginx ~]#grep -A2 a test.txt
aaaaa
bbbbb
ccccc
[17:09:36 root@nginx ~]#grep -A1 a test.txt
aaaaa
bbbbb
[17:09:44 root@nginx ~]#grep -A2 a test.txt
aaaaa
bbbbb
ccccc
[17:10:19 root@nginx ~]#grep -B2 a test.txt
aaaaa
[17:10:26 root@nginx ~]#grep -C1 a test.txt
aaaaa
bbbbb
[17:10:35 root@nginx ~]#grep -c aaa test.txt
1
[17:10:57 root@nginx ~]#grep -e aaa -e bbb test.txt
aaaaa
bbbbb
[17:11:24 root@nginx ~]#grep -in c test.txt
3:ccccc
6:CCCCCC
[17:11:39 root@nginx ~]#grep -o aaaaa test.txt
aaaaa
[17:12:42 root@nginx ~]#grep -v aaa test.txt
bbbbb
ccccc
AAAAAA
BBBBBB
CCCCCC
[17:14:32 root@nginx ~]#grep -f grep.txt test.txt
aaaaa