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
posted @ 2024-02-22 17:17  只为心情愉悦  阅读(10)  评论(0编辑  收藏  举报