grep
选项 | 作用 |
---|---|
-o | 只显示过滤内容 |
-n | 只显示过滤内容 |
-v | 取反 |
-A(n) | 显示关键字往后N行 |
-B(n) | 显示关键字往前N行 |
-C(n) | 现在关键字前后N行 |
-w | 匹配关键字 精确匹配 |
-i | 忽略大小写 |
-c | 统计行数 |
-q | 静默输出 |
-l | 显示过滤所在文件名 |
-L | 对比关键字不在哪个文件中 |
-h | 过滤多个文件 只显示文件内容不显示文件名 |
-f | 只显示两个文件相同的部分 |
-F | 带关键字的内容列表形式展开 |
-m(n) | 限制grep检索行数的输出 |
-r | 对文件进行递归检索 |
-x | 对行进行精准过滤 |
零宽断言
## 零宽断言
[root@web02 ~]# ifconfig eth0|grep -Po '[1-9][0-9]*\.\d+\.\d+\.\d+(?= netmask)'
[root@web02 ~]# uptime|grep -Po '\d+(?= user)
-o
-o # 只显示过滤内容
[root@m01 ~]# grep -o xxx /etc/passwd
xxx
xxx
-n
-n # 显示过滤内容在文本中的行号
grep -n 'xxx' /etc/passwd
26:xxx:x:1000:1000::/home/xxx:/bin/bash
-v
-v # 取反
[root@m01 ~]# grep -v xxx /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
-A
-A # 显示关键字往后N行
[root@m01 ~]#
[root@m01 ~]# grep -A2 ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
-B
-B # 显示关键字往前N行
[root@m01 ~]# grep -B2 ftp /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
-C
-C # 现在关键字前后N行
[root@m01 ~]# grep -C2 ftp /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
-w
-w # 匹配关键字 精确匹配
[root@m01 ~]# cat 1.txt | grep xx
xx
xxx
xxxx
[root@m01 ~]# cat 1.txt | grep -w xx
xx
-i
-i # 忽略大小写
[root@m01 ~]# cat 1.txt | grep -wi XXXX
xxxx
XXXX
-c
-c # 统计行数
[root@m01 ~]# cat 1.txt | grep -wi XXXX
xxxx
XXXX
[root@m01 ~]# cat 1.txt | grep -wic XXXX
2
-q
-q # 静默输出
[root@m01 ~]# cat 1.txt | grep -wic XXXX
2
[root@m01 ~]# cat 1.txt | grep -wicq XXXX
-l
[root@m01 ~]# grep -l x 1.txt 2.txt
1.txt
-L
-L # 对比关键字不在哪个文件中
[root@m01 ~]# grep -L x 1.txt 2.txt
2.txt
-h
-h 只显示文件内容
grep -h .* 1.txt 2.txt
-f
-f 只显示文件相同的部分
[root@m01 ~]# cat 1.txt 2.txt
x
xx
xxx
xxxx
XXXX
y
yy
yyy
yyyy
YYYY
xxx
xxxx
[root@m01 ~]# grep -f 1.txt 2.txt
xxx
xxxx
-F
-F 带关键字的内容列表形式展开
grep -F x 1.txt 2.txt
1.txt:x
1.txt:xx
1.txt:xxx
1.txt:xxxx
2.txt:xxx
2.txt:xxxx
-m 限制grep的输出
-m 限制grep的输出
[root@m01 ~]# grep x 1.txt
x
xx
xxx
xxxx
[root@m01 ~]# grep -m1 x 1.txt
x
[root@m01 ~]# grep -m2 x 1.txt
x
xx
-r
-r # 递归检索
[root@m01 web]# tree
.
├── css
│ └── style.css
├── image
├── index.html
└── js
└── main.js
# -r 例子
grep -r 'www.xxxxx.com' .
./css/style.css:www.xxxxx.com
./index.html:www.xxxxx.com
grep -rl 'www.xxxxx.com' .
./css/style.css
./index.html
-x
-x # 匹配完整的行关键字
grep -x 'root:x:0:0:root:/root:/bin/bash' /etc/passwd
-E
-E # 支持正则表达式
grep -E 'root|xxx' /etc/passwd