grep命令
grep [ 选项 ] 查找条件 目标文件
常用选项 | 说明 |
---|---|
-color | 对匹配到的文本着色显示 |
-m # | 匹配#次后停止 匹配到 #行停止 |
-v | 取反,显示不被匹配到的行 |
-i | 忽略字符大小写 |
-n | 显示匹配的行号 |
-c | 统计匹配的行数 |
-o | 仅显示匹配到的字符串 |
-q | 静默模式,不输出任何信息(写脚本时常用,使用命令echo $? 反馈结果) |
-A # | 后#行 (after) |
-B # | 前#行(before) |
-C # | 前后各#行(context) |
-e | 实现多个选项间的逻辑or关 |
-w | 匹配整个单词 |
-E | 使用ERE,相当于egrep |
-f | 匹配两个文件相同内容,把第一个文件作为匹配条件 |
-r | 递归目录,但不处理软链接 |
-R | 递归目录,但处理软链接 |
[root@localhost ~]#grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
#匹配到1行后停止
[root@localhost ~]#grep -m 1 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
#统计匹配的行数
[root@localhost ~]#grep -c bash /etc/passwd
2
#只显示匹配到的字符串
[root@localhost ~]#grep -o root /etc/passwd
root
root
root
root
#匹配文件中的root字符串
[root@localhost ~]#grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
#静默模式,不输出任何信息
[root@localhost ~]#grep -q root /etc/passwd
#查看上一条命令的反馈结果,输出0表示正确,非0表示不正确
[root@localhost ~]#echo $?
0
#匹配包含root字符串或者包含bash字符串的行(实现多个选项间的逻辑or关系)
[root@localhost ~]#grep -e root -e bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
liuyanfen:x:1000:1000:liuyanfen:/home/liuyanfen:/bin/bash
[root@localhost ~]#cat a
123
123
1456
[root@localhost ~]#cat b
123
478
498
#匹配两个文件中相同的部分,(以第一个文件作为匹配条件)
[root@localhost ~]#grep -f a b
123
478
498
#匹配root字符串的后3行
[root@localhost ~]#grep -A3 -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4-adm:x:3:4:adm:/var/adm:/sbin/nologin
--
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13-nobody:x:99:99:Nobody:/:/sbin/nologin
#匹配root字符串的前3行
[root@localhost ~]#grep -B3 -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
--
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
#匹配root字符串的前后各3行
[root@localhost ~]#grep -C3 -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
4-adm:x:3:4:adm:/var/adm:/sbin/nologin
--
7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13-nobody:x:99:99:Nobody:/:/sbin/nologin