91 正则介绍_grep(上)
正则介绍
grep
[root@localhost ~]#mkdir grep
[root@localhost ~]#cd grep/
[root@localhost grep]#cp /etc/passwd .
[root@localhost grep]#ls
passwd
[root@localhost grep]#grep 'nologin' passwd
bin:x: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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
[root@localhost grep]#which grep
alias grep='grep --color=auto'(自动颜色)
/usr/bin/grep
grep -c 显示行数
[root@localhost grep]#grep -c 'nologin' passwd
15
grep -n 显示行号
[root@localhost grep]#grep -n 'nologin' 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
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:997:User for polkitd:/:/sbin/nologin
17:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
18:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19:chrony:x:998:996::/var/lib/chrony:/sbin/nologin
grep -i不区分大小写
[root@localhost grep]#grep -n 'nologin' passwd |head -4
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
[root@localhost grep]#grep -ni 'nologin' passwd |head -4
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
grep -v 取反 显示不符合条件的
[root@localhost grep]#grep -n 'nologin' passwd |head -4
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
[root@localhost grep]#grep -nv 'nologin' passwd |head -4
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/NOLogin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
grep -r 遍历所有目录下文件
[root@localhost grep]#grep -r 'root' /etc/ |head -1
/etc/grub.d/00_header:datarootdir="/usr/share"
grep -A 后面跟数字 显示符合要求的行并显示其下面的n行
[root@localhost grep]#grep -nA2 'bash' passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/NOLogin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
20:wsl:x:1000:1000::/home/wsl:/bin/bash
21:wsl1:x:1001:1001::/home/wsl1:/bin/bash
grep -B后面跟数字 显示符合条件的行并显示其上面的n行
[root@localhost grep]#grep -nB2 'bash' passwd
1:root:x:0:0:root:/root:/bin/bash
--
18-sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19-chrony:x:998:996::/var/lib/chrony:/sbin/nologin
20:wsl:x:1000:1000::/home/wsl:/bin/bash
21:wsl1:x:1001:1001::/home/wsl1:/bin/bash
grep -C 后面跟数字 显示符合条件的行并显示其上下各n行
[root@localhost grep]#grep -nC2 'bash' passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/NOLogin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
18-sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19-chrony:x:998:996::/var/lib/chrony:/sbin/nologin
20:wsl:x:1000:1000::/home/wsl:/bin/bash
21:wsl1:x:1001:1001::/home/wsl1:/bin/bash
9.2 grep(中)
grep正则实例
^ 号表示以什么开头的
[root@localhost grep]#grep -n '^#' /etc/inittab |head -1
(以#开头的行)
1:# inittab is no longer used when using systemd.
^ 放在 [] 里面表示取反
[root@localhost grep]#grep -n '^[^0-9]' passwd |head -4
1:root:x:0:0:root:/root:/bin/bash
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
[root@localhost grep]#grep -n '^[0-9]' passwd |head -4
93 grep(下)
. 表示任意一个字符
[root@localhost grep]#grep 'r.o' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
\ 脱义符 grep -E 识别{} egrep 识别{}
[root@localhost grep]#grep '{2}' passwd
[root@localhost grep]#grep 'o\{2\}' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@localhost grep]#grep -En 'o{2}' passwd
1:root:x:0:0:root:/root:/bin/bash
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
17:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@localhost grep]#egrep -n 'o{2}' passwd
1:root:x:0:0:root:/root:/bin/bash
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
17:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
egrep 'o+o' 表示前面的o有一次以上
[root@localhost grep]#egrep 'o+o' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
egrep 'o+1' 表示1前面的o有1次或者0次的
[root@localhost grep]#egrep 'o?1' passwd
bin:x:1:1:bin:/bin:/sbin/NOLogin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
wsl:x:1000:1000::/home/wsl:/bin/bash
wsl1:x:1001:1001::/home/wsl1:/bin/bash
egrep 'root|nologin' 表示匹配root和nologin
[root@localhost grep]#grep -E 'root|nologin' passwd
root:x:0:0:root:/root:/bin/bash
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
扩展
把一个目录下,过滤所有.php文档中含有eval的行
grep -r --include=".php" 'eval' /data/
网友评论