grep(global regular expression print)是Linux下查找匹配字符串的工具,非常强大。grep在查找指定字符串时,如果找到会显示包含查找字符串的行。
1、在单个文件中查找匹配字符串
下面命令在/etc/passwd文件中查找“root”:
$ grep root /etc/passwd
2、在多个文件中查找匹配字符串
$ sudo grep root /etc/passwd /etc/shadow /etc/gshadow
3、列出包含指定字符的文件
$ sudo grep -l root /etc/passwd /etc/shadow /etc/gshadow
4、在文件中查找匹配字符串,并显示相应的行号
$ grep -n root /etc/passwd
5、输出所有不匹配的行
$ grep -v root /etc/passwd
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
libuuid:x:100:101::/var/lib/libuuid:
syslog:x:101:104::/home/syslog:/bin/false
messagebus:x:102:106::/var/run/dbus:/bin/false
usbmux:x:103:46:usbmux daemon,,,:/home/usbmux:/bin/false
dnsmasq:x:104:65534:dnsmasq,,,:/var/lib/misc:/bin/false
pulse:x:115:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
mm:x:1000:1000:mm,,,:/home/mm:/bin/bash
vboxadd:x:999:1::/var/run/vboxadd:/bin/false
6、使用^匹配行开始字符
下面例子匹配passwd文件中以root开始的行:
$ grep ^root /etc/passwd
7、使用$匹配行结尾字符
下面例子匹配passwd文件中以bash结束的行:
$ grep bash$ /etc/passwd
8、递归的搜索目录中所有文件
$ sudo grep -r root /etc/
9、搜索文件中的空行
$ grep -n ^$ /etc/profile
3:
19:
22:
-n选项显示行号
10、忽略大小写
$ grep -i RooT /etc/passwd
11、匹配多个字符串
$ grep -e root -e www-data /etc/passwd
12、使用匹配模式文件
创建匹配模式文件,pattern文件内容:
$ cat pattern
^root
www-data
false$
使用grep匹配:
$ grep -f pattern /etc/passwd
13、统计匹配的行数
统计上面例子中配置的行数:
$ grep -c -f pattern /etc/passwd
14、显示匹配行上下文
$ grep -B 4 root /etc/passwd // 匹配行前4行内容
root:x:0:0:root:/root:/bin/bash
$ grep -A 4 root /etc/passwd // 匹配行后4行内容
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
$ grep -C 4 root /etc/passwd // 匹配行前后各4行内容
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
15、统计文件总行数
$ grep -c ".*" filename
相关主题