对“正则表达式”的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串。
grep/egrep
该命令的格式:grep [-cinvABC] ‘word‘ filename,其常用的选项如下所示。
-c:表示打印符合要求的行数。
-i:表示忽略大小写。
-n:表示输出符合要求的行及其行号。
-v:表示打印不符合要求的行。
-A:后面跟一个数字(有无空格都可以),例如-A2表示打印符合要求的行以及下面2行
-B:后面跟一个数字,-B2表示打印符合要求的行以及上面2行。
-C:后面跟一个数字,-C2表示打印符合要求的行以及上下各2行。
-r:遍历所有子目录。
1 [root@lizhipeng01 ~]# mkdir grep 2 [root@lizhipeng01 ~]# cd grep/ 3 [root@lizhipeng01 grep]# cp /etc/passwd . 4 [root@lizhipeng01 grep]# ls 5 passwd 6 [root@lizhipeng01 grep]# pwd 7 /root/grep 8 [root@lizhipeng01 grep]# ls 9 passwd 10 [root@lizhipeng01 grep]# grep ‘nologin‘ passwd 11 bin:x:1:1:bin:/bin:/sbin/nologin 12 daemon:x:2:2:daemon:/sbin:/sbin/nologin 13 adm:x:3:4:adm:/var/adm:/sbin/nologin 14 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 15 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 16 operator:x:11:0:operator:/root:/sbin/nologin 17 games:x:12:100:games:/usr/games:/sbin/nologin 18 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 19 nobody:x:99:99:Nobody:/:/sbin/nologin 20 avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin 21 dbus:x:81:81:System message bus:/:/sbin/nologin 22 polkitd:x:999:998:User for polkitd:/:/sbin/nologin 23 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin 24 postfix:x:89:89::/var/spool/postfix:/sbin/nologin 25 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 26 user4:x:1006:1005::/home/lizhipeng001:/sbin/nologin
[root@lizhipeng01 grep]# grep -c ‘nologin‘ passwd 显示多少行带有nologin
16
[root@lizhipeng01 grep]# grep -n ‘nologin‘ passwd 显示行号,该行带有nologin
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:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
25:user4:x:1006:1005::/home/lizhipeng001:/sbin/nologin
[root@lizhipeng01 grep]# grep -vni ‘nologin‘ passwd v取反,显示不带有nologin的行
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
20:lizhipeng:x:1000:1000::/home/lizhipeng:/bin/bash
21:user1:x:1001:1001::/home/user1:/bin/bash
22:lzp:x:1002:1003::/home/lzp:/bin/bash
23:user2:x:1003:1006::/home/user2:/bin/bash
24:user3:x:1004:1005::/home/user3:/bin/bash
26:user5:x:1007:1007::/home/user5:/bin/bash
[root@lizhipeng01 grep]# grep -r ‘root‘ /etc/ > /tmp/grep.log [root@lizhipeng01 grep]# grep passwd /tmp/grep.log /etc/passwd:root:x:0:0:root:/root:/bin/bash /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin /etc/passwd-:root:x:0:0:root:/root:/bin/bash /etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin /etc/postfix/main.cf:# the system passwd file in the chroot jail is just not practical.
[root@lizhipeng01 grep]# grep -nA2 ‘root‘ passwd -nA2,n显示行号,A2,含有root的行以及下面2行
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
--
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
[root@lizhipeng01 grep]# grep -nB2 ‘root‘ passwd -B含有‘root‘的行,以及上面2行
1:root:x:0:0:root:/root:/bin/bash
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@lizhipeng01 grep]# grep -nC2 ‘root‘ passwd -C含有‘root‘的行,以及上下各2行
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
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
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
[root@lizhipeng01 grep]# grep ‘[0-9]‘ passwd 过滤出含有数字的行
[root@lizhipeng01 grep]# grep -v ‘[0-9]‘ passwd 带数字的都不要
[root@lizhipeng01 grep]# grep -n ‘^#‘ passwd 过滤出以#开头的行
[root@lizhipeng01 grep]# grep -nv ‘^#‘ passwd 过滤不是以#开头的行
[root@lizhipeng01 grep]# cp /etc/inittab .
[root@lizhipeng01 grep]# ls
inittab passwd
[root@lizhipeng01 grep]# vim inittab
[root@lizhipeng01 grep]# grep -v ‘^#‘ inittab 过滤不是以#开头的行
adadad
jij
11111
[root@lizhipeng01 grep]# grep ‘r.o‘ passwd .表示任意一个字符
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@lizhipeng01 grep]# grep ‘o*o‘ passwd *表示零个或多个*前面的字符
[root@lizhipeng01 grep]# grep ‘o\{2\}‘ passwd {2},表示前面的字符要重复的次数
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@lizhipeng01 grep]# grep -E ‘o{2}‘ passwd -E,就可以去掉脱意\
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@lizhipeng01 grep]# egrep ‘o+o‘ passwd +表示匹配1个或者多个+前面的字符,这个+是不支持被grep直接使用的。
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@lizhipeng01 grep]# egrep ‘o?‘ passwd ?表示匹配0个或1个前面的字符
[root@lizhipeng01 grep]# egrep ‘aa|oo|11‘ passwd 表示匹配要么匹配字符串aa,要么oo,要么11
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@lizhipeng01 grep]# egrep ‘r(oo|at)o‘ passwd
operator:x:11:0:operator:/root:/sbin/nologin