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