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
相关主题 |