9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

Posted sisul

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.1 正则介绍_grep上 9.2 grep中 9.3 grep下相关的知识,希望对你有一定的参考价值。

对“正则表达式”的定义是:它使用单个字符串来描述或匹配一系列符合某个句法规则的字符串。

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

以上是关于9.1 正则介绍_grep上 9.2 grep中 9.3 grep下的主要内容,如果未能解决你的问题,请参考以下文章

9.1 正则介绍_grep(上);9.2 grep(中);9.3 grep(下)

9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

六周第一次课 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

9.1 正则介绍_grep上 9.2 grep中 9.3 grep下

六周第一次课(1月15日) 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下