作用
Linux中一种强大的文件搜索过滤工具,可以按照正则表达式检索文件内容,并把匹配的结果显示到屏幕上(内容会标红)
格式
grep -参数 条件 文件名
参数
-i
:忽略大小写进行匹配。-c
:只打印匹配的行数。-v
:反向查找,只打印不匹配的行。-n
:显示匹配行的行号。-r
:递归查找子目录中的文件。-l
:只打印匹配的文件名。-E
:等价于egrep,启用正则表达式-w
:匹配单词。-o
:只显示匹配的内容。-q
:静默模式,没有任何内容的输出,使用$?来判断是否执行成功-A
数字:匹配行及以下n行-B
数字:匹配行及以上n行-C
数字:匹配行及以下n行
注意
- 如果使用grep检索是,条件中包含了空格,需要使用双引号扣起来
- 如果搜索成功返回0状态码,否则为1状态码
示例
针对/etc/passwd
显示行号 -n
[root@localhost ~]# grep -n "root" /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
过滤passwd中不能登陆的用户(以/sbin/nologin结尾)
[root@localhost ~]# grep -n "/sbin/nologin" /etc/passwd
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
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
显示能登陆的用户(-v反向过滤)
[root@localhost ~]# grep -nv "/sbin/nologin" /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
显示sshd上五行信息
[root@localhost ~]# grep -nB5 "sshd" /etc/passwd
28-systemd-oom:x:984:984:systemd Userspace OOM Killer:/:/usr/sbin/nologin
29-gdm:x:42:42::/var/lib/gdm:/sbin/nologin
30-cockpit-ws:x:983:982:User for cockpit web service:/nonexisting:/sbin/nologin
31-cockpit-wsinstance:x:982:981:User for cockpit-ws instances:/nonexisting:/sbin/nologin
32-gnome-initial-setup:x:981:980::/run/gnome-initial-setup/:/sbin/nologin
33:sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
显示sshd上下1行
[root@localhost ~]# grep -nC1 "sshd" /etc/passwd
32-gnome-initial-setup:x:981:980::/run/gnome-initial-setup/:/sbin/nologin
33:sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
34-chrony:x:980:979:chrony system user:/var/lib/chrony:/sbin/nologin
[root@localhost ~]#
统计行数 -c
[root@localhost ~]# grep -nC1 "sshd" /etc/passwd
32-gnome-initial-setup:x:981:980::/run/gnome-initial-setup/:/sbin/nologin
33:sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
34-chrony:x:980:979:chrony system user:/var/lib/chrony:/sbin/nologin
[root@localhost ~]#