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

第九章 正则

9.1 正则介绍&grep(上)

 

转:

正则

在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。

正则表达式的基础  

在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。如:正则表达式"test"中没有包含任何元字符,它可以匹配"test"和"007test007"等字符串,但是不能匹配"Test"。

要想真正的用好正则表达式,需要正确的理解元字符。

元字符

. :匹配任何单个字符。例如正则表达式 r.t 匹配这些字符串:rat、rut、r t,但是不匹配root。

$ :匹配行结束符。例如正则表达式 weasel$ 能够匹配字符串"He's a weasel"的末尾,但是不能匹配字符串"They are a bunch of weasels."。

^ :匹配一行的开始。例如正则表达式 ^When in 能够匹配字符串"When in the course of human events"的开始,但是不能匹配"What and When in the"。

*:匹配0个或多个正好在它之前的那个字符。如,正则表达式 .* 意味着能够匹配任意数量的任何字符(代表所有内容)。

" \ ":脱义符,使这里列出的这些元字符以普通的字符的身份来进行匹配。如,\ . 是匹配点字符,而不是以通配符的身份出现。

[ ]:匹配括号中的任何一个字符。如,正则表达式 r[aeo]d 匹配rad,red,rod。也可以指定区间 [0-9a-zA-Z] ,即代表所有非特殊字符!

\ <,\ >:匹配词(word)的开始(\ <)和结束(\ >)。例如正则表达式 \ < the 能够匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。 注意: 这个元字符不是所有的软件都支持的。

|:将两个匹配条件进行逻辑“或”(Or)运算。 注意: 这个元字符不是所有的软件都支持的。

+:匹配1或多个正好在它之前的那个字符。注意: 这个元字符不是所有的软件都支持的。

?:匹配0或1个正好在它之前的那个字符。注意: 这个元字符不是所有的软件都支持的。

\ {i\ }\ {i,j\ }: 匹配指定数目的字符,这些字符是在它之前的表达式定义的。例如正则表达式A[0-9]\ {3\ } 能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等,但是不匹配A1234。而正则表达式[0-9]\ {4,6\ } 匹配连续的任意4个、5个或者6个数字字符。注意: 这个元字符不是所有的软件都支持的。

正则表达式的语法支持情况

mark
注: x表示支持。

转:

grep(上)

grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep,egrep和fgrep的命令都是grep的扩展,支持更多的re元字符,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

语法: grep [options] ‘Word’ filename

grep [-cinvABC] 'word' filename

• -c 行数

• -i 不区分大小写

• -n 显示行号

• -v 取反

• -r 遍历所有子目录

• -A 后面跟数字,过滤出符合要求的行以及下面n行

• -B 同上,过滤出符合要求的行以及上面n行

• -C 同上,同时过滤出符合要求的行以及上下各n行
 

过滤一个字符串

[root@cham2 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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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:997:995::/var/lib/chrony:/sbin/nologin
[root@cham2 grep]# grep -c 'nologin' passwd

在Linux7中,grep默认带color选项:

154753_egG6_3708120.png

grep -c  行数

[root@cham2 grep]# grep -c 'nologin' passwd
16
[root@cham2 grep]# cat !$
cat passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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:997:995::/var/lib/chrony:/sbin/nologin

grep -n 显示行号 

[root@cham2 grep]# grep -n 'nologin' passwd
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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16:dbus:x:81:81:System message bus:/:/sbin/nologin
17:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
21:chrony:x:997:995::/var/lib/chrony:/sbin/nologin

 grep -i 不区分大小写

[root@cham2 grep]# cat passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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:997:995::/var/lib/chrony:/sbin/nologin

[root@cham2 grep]# grep 'nologin' passwd
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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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:997:995::/var/lib/chrony:/sbin/nologin

[root@cham2 grep]# grep -i '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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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:997:995::/var/lib/chrony:/sbin/nologin

[root@cham2 grep]# grep -ic 'nologin' passwd
17

 grep -v 取反

[root@cham2 grep]# grep -v 'nologin' passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/NOLOGIN
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

grep -r/R•遍历所有子目录

[root@cham2 grep]# tree
.
├── grep11
│   └── passwd
└── passwd

1 directory, 2 files
[root@cham2 grep]# grep -R 'root' .
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./grep11/passwd:root:x:0:0:root:/root:/bin/bash
./grep11/passwd:operator:x:11:0:operator:/root:/sbin/nologin
[root@cham2 grep]# grep -r 'root' .
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./grep11/passwd:root:x:0:0:root:/root:/bin/bash
./grep11/passwd:operator:x:11:0:operator:/root:/sbin/nologin

grep -A 后面跟数字,过滤出符合要求的行以及下面n行

grep -B 同上,过滤出符合要求的行以及上面n行

grep -C 同上,同时过滤出符合要求的行以及上下各n行

[root@cham2 grep]# grep -nA2 'daemon' passwd
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
--
18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19-postfix:x:89:89::/var/spool/postfix:/sbin/nologin
20-sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@cham2 grep]# grep -nB2 'daemon' 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
--
16-dbus:x:81:81:System message bus:/:/sbin/nologin
17-polkitd:x:998:996:User for polkitd:/:/sbin/nologin
18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
[root@cham2 grep]# grep -nC2 'daemon' 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
4-adm:x:3:4:adm:/var/adm:/sbin/nologin
5-lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
--
16-dbus:x:81:81:System message bus:/:/sbin/nologin
17-polkitd:x:998:996:User for polkitd:/:/sbin/nologin
18:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19-postfix:x:89:89::/var/spool/postfix:/sbin/nologin
20-sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

9.2 grep(中)

grep应用

grep -n '[0-9]' passwd 它表示方括号里面的任意一个字符

[root@cham2 grep]# grep '[0-9]' passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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:997:995::/var/lib/chrony:/sbin/nologin

160823_ZSxh_3708120.png

grep -vn '[0-9]' /etc/inittab

[root@cham2 grep]# grep -vn '[0-9]' /etc/inittab
1:# inittab is no longer used when using systemd.
2:#
3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
4:#
5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
6:#
7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
8:#
11:#
12:# To view current default target, run:
13:# systemctl get-default
14:#
15:# To set a default target, run:
16:# systemctl set-default TARGET.target
17:#

161145_mbRX_3708120.png

grep -vn ' ^# ' 过滤以#开头的行(^在此表示以某字符开头)-vn把不以#好开头的文件打印出来

[root@cham2 grep]# grep -n '^#' inittab
1:# inittab is no longer used when using systemd.
2:#
3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
4:#
5:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
6:#
7:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
8:#
9:# multi-user.target: analogous to runlevel 3
12:# graphical.target: analogous to runlevel 5
13:#
15:# To view current default target, run:
16:# systemctl get-default
17:#
18:# To set a default target, run:
19:# systemctl set-default TARGET.target
20:#
[root@cham2 grep]# grep -vn '^#' inittab
10:
11:21weqweqweqweqwewqeqwesafdsf
14:1231212412414124124124

#vim inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
!@@%#@%#@^$^&$#&#&#%&#%^$#@^$
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#$%$^%$^$^$^#%#@$@%#^#^#&
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3

21weqweqweqweqwewqeqwesafdsf
# graphical.target: analogous to runlevel 5
#
1231212412414124124124
# To view current default target, run:
# systemctl get-default
1111111111111111111111
#
# To set a default target, run:
222222222222222222222222222
# systemctl set-default TARGET.target
#

[root@cham2 grep]# grep -v '^#' inittab
!@@%#@%#@^$^&$#&#&#%&#%^$#@^$

21weqweqweqweqwewqeqwesafdsf
1231212412414124124124
1111111111111111111111
222222222222222222222222222

grep '[^0-9]' 表示非0-9中任意字符所在的行,即任意非数字所在的行(只要包含非数字字符都算在内,方括号内的‘^’表示否定)

[root@cham2 grep]# grep -n '[^0-9]' inittab 
1:# inittab is no longer used when using systemd.
2:#
3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
4:!@@%#@%#@^$^&$#&#&#%&#%^$#@^$
5:#
6:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
7:#$%$^%$^$^$^#%#@$@%#^#^#&
8:#
9:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
10:1111111111a
11:#
12:# multi-user.target: analogous to runlevel 3
14:21weqweqweqweqwewqeqwesafdsf
15:# graphical.target: analogous to runlevel 5
16:#
18:# To view current default target, run:
19:# systemctl get-default
21:#
22:# To set a default target, run:
24:# systemctl set-default TARGET.target
25:#

[root@cham2 grep]# grep -n '^[^0-9]' inittab     
1:# inittab is no longer used when using systemd.
2:#
3:# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
4:!@@%#@%#@^$^&$#&#&#%&#%^$#@^$
5:#
6:# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
7:#$%$^%$^$^$^#%#@$@%#^#^#&
8:#
9:# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
11:#
12:# multi-user.target: analogous to runlevel 3
15:# graphical.target: analogous to runlevel 5
16:#
18:# To view current default target, run:
19:# systemctl get-default
21:#
22:# To set a default target, run:
24:# systemctl set-default TARGET.target
25:#

[root@cham2 grep]# grep -nv '^[^0-9]' inittab 
10:1111111111a
13:
14:21weqweqweqweqwewqeqwesafdsf
17:1231212412414124124124
20:1111111111111111111111
23:222222222222222222222222222

163422_VvmA_3708120.png

grep 'r.o' 在此 “ . ” 表示一个任意字符

[root@cham2 grep]# grep 'r.o' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@cham2 grep]# vi passwd
[root@cham2 grep]# vi passwd
[root@cham2 grep]# grep 'r.o' passwd
root:x:0:0:root:/root:/bin/bash
dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345
222222:r<o:dfdsfdsg
operator:x:11:0:operator:/root:/sbin/nologin
[root@cham2 grep]# grep 'r.o' passwd
root:x:0:0:root:/root:/bin/bash
dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345
222222:r.o:dfdsfdsg
operator:x:11:0:operator:/root:/sbin/nologin


grep 'o*o' 在此‘ * ’表示其左边的字符重复n次(n≥0

[root@cham2 grep]# grep 'o*o' passwd
root:x:0:0:root:/root:/bin/bash
dfsdfdsfsdfs:1241124:jksdfhdskjf:sfdsf:rao:325345345
222222:r.o:dfdsfdsg
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spoool/lpd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
mail:x:8:12:mail:/var/spoooooool/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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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:997:995::/var/lib/chrony:/sbin/nologin

164509_1J7z_3708120.png

grep '.*' 在此' . * '组合表示所有任意字符

164622_N98R_3708120.png

匹配单行

164808_CVlk_3708120.png

grep 'o\ {2\ }' 在此{}表示前面字符或字符串出现的次数,又或者叫重复范围。(也可以是一个区间,如'o\ {0,3\ }'表示0个到3个o)不想脱义可使用-E 或者egrep

[root@cham2 grep]# grep 'o\{2\}' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spoool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spoooooool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

165349_Csf5_3708120.png

egrep  'o+o' 在此‘+’表示其左边的字符重复n此(一次或者多次)(n≥1,注意和*的区别)

不想脱义可使用-E 或者egrep

[root@cham2 grep]# grep 'o\+o' passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spoool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spoooooool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

[root@cham2 grep]# grep 'o\+r' passwd
operator:x:11:0:operator:/root:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin

egrep -n 'o?t' 在此?表示其前面的字符出现0或1,要么有要么没有

[root@cham2 grep]# egrep 'o?t' passwd
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halo1t:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

212834_UjUi_3708120.png

egrep -n 'root|nologin' 在此‘|’表示或者

[root@cham2 grep]# grep -E 'root|nologin' passwd 
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ad11om:x:3:4:ad1om:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spoool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spoooooool/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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/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:997:995::/var/lib/chrony:/sbin/nologin

171050_Msx8_3708120.png

grep -nE '(oo){2}' 在此()内的内容表示一个字符组合,即连续出现两次‘oo’=‘oooo’字符串

171634_YRFl_3708120.png

转载于:https://my.oschina.net/u/3708120/blog/1801256

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值