grep - 运维三剑客
简介
- 主要用于匹配字符串
- 示例:
grep [option]... [file]...
参数介绍
-i:忽略大小写匹配
点击查看代码
[root@master ~]# cat a
000-AAA
000-aaa
[root@master ~]# grep aaa a
000-aaa
# 忽略大小写后,能匹配000-AAA
[root@master ~]# grep -i aaa a
000-AAA
000-aaa
-w:整词匹配
点击查看代码
[root@master ~]# cat a
000-AAA
000-aaa
[root@master ~]# grep -w aaa a
000-aaa
# 设置正词匹配后,aa作为一个整体,无法匹配到aaa
[root@master ~]# grep -w aa a
-v:反选
点击查看代码
[root@master ~]# cat a
000-AAA
000-AAA
000-aaa
# 匹配到aaa后,结果取反
[root@master ~]# grep -v aaa a
000-AAA
000-AAA
-c:显示匹配到的行的数量
-n:显示匹配到的行号和行内容
点击查看代码
[root@master ~]# cat a
000-AAA
000-aaa
000-AAA
000-AAA
# 一共有3行内容包含AAA
[root@master ~]# grep -c AAA a
3
# 包含行号和内容
[root@master ~]# grep -n AAA a
1:000-AAA
3:000-AAA
4:000-AAA
-r:递归匹配
-l:显示目录名
--exclude=:按条件排除结果
使用通配符
只匹配文件名,不是按结果进行整体匹配
点击查看代码
# 在当前目录下创建文件x
# 并且创建子目录a1,将文件x复制到子目录a1中,重命名为x1
[root@master a]# cat x
a
bb
ccc
# 直接递归查询,会得到文件和行内容
[root@master a]# grep -r ccc ./
./a1/x1:a2ccc
./x:ccc
# 只希望得到文件名
[root@master a]# grep -r ccc -l ./
./a1/x1
./x
# 排除符合条件的文件
[root@master a]# grep -r ccc -l ./ --exclude "*1"
./x
-A n:匹配行+后边n行
-B n:匹配行+前边n行
-C n:匹配行+前后n行
点击查看代码
[root@master ~]# cat a
000-a
000-b
000-c
000-d
000-e
# 匹配行+后2行
[root@master ~]# grep c -A 2 a
000-c
000-d
000-e
# 匹配行+前2行
[root@master ~]# grep c -B 2 a
000-a
000-b
000-c
# 匹配行+前后1行
[root@master ~]# grep c -C 1 a
000-b
000-c
000-d
# 匹配行+前后+显示行号,结果显示会有差别
# 匹配行是:行号:行内容
# 前后行是:行号-行内容
[root@master ~]# grep c -C 1 -n a
2-000-b
3:000-c
4-000-d
-E:正则
-o:显示匹配内容,实际使用上主要是为了正则的模糊匹配,因为完全匹配结果没啥意义
点击查看代码
[root@master ~]# cat a
x-abc-x
y..aaae
tim
tom
# 使用正则匹配"t.m"的
[root@master ~]# grep -E 't.m' a
tim
tom
# 正则表达式中只匹配a前后一个字符,所以-o输出也是a前后一个字符
[root@master ~]# grep -E '.a.' -o a
-ab
.aa
欢迎加 1092845214 交流沟通呀~
本文来自博客园,作者:难德糊涂,转载请注明原文链接:https://www.cnblogs.com/yangkaiyue/p/18245355

浙公网安备 33010602011771号