grep

用来过滤你感兴趣的信息的


语法格式:

grep 选项 模式 文件或文件列表

简单样例:

——查看/etc/passwd文件中包含root的行

[root@server254 test]# grep root /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

groot:x:501:3004::/home/groot:/bin/bash

选项:

-i —— --ignore-case 忽略大小写

[root@server254 test]# cp /etc/passwd /test/pass

:1,6 w pass

[root@server254 test]# cat pass

root:x:0:0:root:/root:/bin/bash

ROOTx:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

[root@server254 ~]# grep -i root /test/pass

root:x:0:0:root:/root:/bin/bash

ROOTx:1:1:bin:/bin:/sbin/nologin

-c —— count 统计匹配行数

[root@server254 ~]# grep -c root /test/pass

1

--color —— 带颜色显示匹配字符串

[root@server254 ~]# grep --color root /test/pass

root:x:0:0:root:/root:/bin/bash

-l —— 只显示匹配的文件名,不显示匹配行的内容

一般和-r联用

-r —— 递归检索

[root@server254 ~]# grep root /test/*

/test/pass:root:x:0:0:root:/root:/bin/bash

/test/passwd:root:x:0:0:root:/root:/bin/bash

/test/passwd:operator:x:11:0:operator:/root:/sbin/nologin

/test/passwd:groot:x:501:3004::/home/groot:/bin/bash

Binary file /test/test.tar matches

只显示文件名

[root@server254 ~]# grep -rl root /test/*

/test/pass

/test/passwd

-m —— 限制最多匹配多少行

[root@server254 ~]# grep -m 2 root /test/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

-q —— 静默输出,一般在我们写脚本时候用

[root@server254 ~]# grep -q root /test/passwd

[root@server254 ~]# echo $?

0

$?:输出0表示上一条命令执行成功

输出非0表示上一条命令未执行成功

[root@server254 ~]# grep -q andbdndndb /test/passwd

[root@server254 ~]# echo $?

1

-n —— line number 显示匹配行的行号

[root@server254 ~]# grep -n root /test/passwd

1:root:x:0:0:root:/root:/bin/bash

11:operator:x:11:0:operator:/root:/sbin/nologin

30:groot:x:501:3004::/home/groot:/bin/bash

-A num —— --after 显示匹配行及其后几行内容

[root@server254 ~]# grep -A 2 root /test/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

--

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

--

groot:x:501:3004::/home/groot:/bin/bash

otheruser:x:502:502::/home/otheruser:/bin/bash

usr4:x:503:503::/home/usr4:/bin/bash

-B num —— --before  显示匹配行及其前几行内容

[root@server254 ~]# grep -B 2 root /test/passwd

root:x:0:0:root:/root:/bin/bash

--

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

--

tcpdump:x:72:72::/:/sbin/nologin

up1:x:500:3003::/home/up1:/bin/bash

groot:x:501:3004::/home/groot:/bin/bash

-C num —— --context   显示匹配行及其前后num行内容

[root@server254 ~]# grep -C 2 root /test/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

--

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

--

tcpdump:x:72:72::/:/sbin/nologin

up1:x:500:3003::/home/up1:/bin/bash

groot:x:501:3004::/home/groot:/bin/bash

otheruser:x:502:502::/home/otheruser:/bin/bash

usr4:x:503:503::/home/usr4:/bin/bash

^ —— 表示行首,过滤字符串开头

[root@server254 ~]# grep ^root /test/passwd

root:x:0:0:root:/root:/bin/bash

$ —— 表示行尾,过滤以某字符串结尾

[root@server254 ~]# grep login$ /test/pass

ROOTx:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

-v —— 反向显示,取反,显示不包含过滤字符串的行

[root@server254 ~]# grep -v daemon /test/pass

root:x:0:0:root:/root:/bin/bash

ROOTx:1:1:bin:/bin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync