课前预习内容
9.1 正则介绍_grep上
9.2 grep中
9.3 grep下
9.4/9.5 sed
9.6/9.7 awk
9.1 正则介绍_grep上 中 下
grep工具是过滤某个关键词,命令的格式为:grep 【-cvinABC】‘word’filename。
在centos7中,grep默认帮我们把匹配到的字符串标注了红色,我们可以用which grep,会发现grep其实是grep --color=auto,这个选项就是颜色显示
[root@localhost grep]# which grep alias grep='grep --color=auto' /usr/bin/grep
- -c:表示打印符合要求的行数
[root@localhost ~]# mkdir grep
[root@localhost ~]# cd grep
[root@localhost grep]# touch test.txt
[root@localhost grep]# ls
test.txt
[root@localhost grep]# cp /etc/passwd test.txt
cp:是否覆盖"test.txt"? y
[root@localhost grep]# ls
test.txt
[root@localhost grep]# cat test.txt
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@localhost grep]# grep -c 'root' test.txt
2
[root@localhost grep]# grep -c 'nologin' test.txt
17
- -i:表示忽略大小写
[root@localhost grep]# grep -i 'root' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
operator:x:11:0:operator:/root:/sbin/nologin
- -n:表示打印符合要求的行以及行号
[root@localhost grep]# grep -in 'root' test.txt
1:root:x:0:0:root:/root:/bin/bash
2:ROOT:Root:323:ererER
11:operator:x:11:0:operator:/root:/sbin/nologin
- -v:表示打印不符合要求的行(也就是把我们定义的字符以外的都列出来)
[root@localhost grep]# grep -inv 'root' test.txt
3:bin:x:1:1:bin:/bin:/sbin/nologin
4:daemon:x:2:2:daemon:/sbin:/sbin/nologin
5:adm:x:3:4:adm:/var/adm:/sbin/nologin
6:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7:sync:x:5:0:sync:/sbin:/bin/sync
8:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9:halt:x:7:0:halt:/sbin:/sbin/halt
10:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
12:games:x:12:100:games:/usr/games:/sbin/nologin
13:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
14:nobody:x:99:99:Nobody:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
18:avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/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:ntp:x:38:38::/etc/ntp:/sbin/nologin
22:nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
- -A:后面跟一个数字(有无空格都可以),例如-A2表示打印符合要求的行以及下面二行
[root@localhost grep]# grep -nA2 'root' test.txt
1:root:x:0:0:root:/root:/bin/bash
2-ROOT:Root:323:ererER
3-bin:x:1:1:bin:/bin:/sbin/nologin
--
11:operator:x:11:0:operator:/root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin
13-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
- -B:后面跟一个数字,例如-B2表示打印符合要求的行以及上面二行
[root@localhost grep]# grep -nB2 'root' test.txt
1:root:x:0:0:root:/root:/bin/bash
--
9-halt:x:7:0:halt:/sbin:/sbin/halt
10-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11:operator:x:11:0:operator:/root:/sbin/nologin注释说明:这里只显示第1行root,因为第一行上面没有行,所以才显示一行
- -C: 后面跟一个数字,例如-C2表示打印符合要求的行以及上下二行
[root@localhost grep]# grep -nC2 'root' test.txt
1:root:x:0:0:root:/root:/bin/bash
2-ROOT:Root:323:ererER
3-bin:x:1:1:bin:/bin:/sbin/nologin
--
9-halt:x:7:0:halt:/sbin:/sbin/halt
10-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11:operator:x:11:0:operator:/root:/sbin/nologin
12-games:x:12:100:games:/usr/games:/sbin/nologin
13-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
- 过滤出所有包含数字的行
[root@localhost grep]# grep '[0-9]' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
- 过滤出所有以#号开头的行
[root@localhost grep]# grep '^#' test.txt
#ROOT:Root:323:ererER
#bin:x:1:1:bin:/bin:/sbin/nologin
#daemon:x:2:2:daemon:/sbin:/sbin/nologin
#32432:eadasd:[root@localhost grep]# grep -n '^[^a-zA-Z]' test.txt
2:#ROOT:Root:323:ererER
3:#bin:x:1:1:bin:/bin:/sbin/nologin
4:#daemon:x:2:2:daemon:/sbin:/sbin/nologin
5:#32432:eadasd:注释说明:^是以什么什么开头,放在[]里面表示非的意思
- 我们编辑一下test。txt文件,在里面加入几行空行,怎么才能把空行列出来呢
[root@localhost grep]# grep -n '^$' test.txt
6:
7:
8:
10:
11:
12:
[root@localhost grep]# vim test.txt
1 root:x:0:0:root:/root:/bin/bash
2 #ROOT:Root:323:ererER
3 #bin:x:1:1:bin:/bin:/sbin/nologin
4 #daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 #32432:eadasd:
6
7
8
9 adm:x:3:4:adm:/var/adm:/sbin/nologin
10
11
12
13 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
14 sync:x:5:0:sync:/sbin:/bin/sync
15 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
16 halt:x:7:0:halt:/sbin:/sbin/halt
17 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
18 operator:x:11:0:operator:/root:/sbin/nologin
19 games:x:12:100:games:/usr/games:/sbin/nologin
20 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
21 nobody:x:99:99:Nobody:/:/sbin/nologin
:set nu 13,1在正则表达式中^表示行的开始,$表示行的结尾,所以空行就用^$表示
- 过滤出任意一个字符和重复字符
[root@localhost grep]# vim test.txt
[root@localhost grep]# grep 'r.o' test.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin.表示任意字符。上例子中,r.o表示把r与o之间有一个任意字符的行过滤出来[root@localhost grep]# grep 'ooo*' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
roooooot:ewew:rooot:roooot
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*表示零个或者多个*前面的字符。上例中,ooo*表示oo、ooo、ooooo、或者很多的o[root@localhost grep]# grep '.*' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32432:eadasd:
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin上面的例子中,.*表示零个或者多个任意字符,空行也包含在内,他会把所有的行都能匹配到
- 指定要过滤的的字符出现的次数
[root@localhost grep]# grep 'o\{2\}' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
roooooot:ewew:rooot:roooot
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
上面的例子中,表示出现2次o的都过滤出来,我们用到了{}字符,其内部为数字,表示数字前面的字符要重复的次数,{}左右都需要加上转义字符\,另外使用{}还可以表示一个范围,{n1,n2},其中n1<n2,表示重复n1到n2次前面的字符。n2还可以为空,这时表示大于等于n次。
其实上面的例子我们还可以不用转义字符\,也能起到同样的效果,就是使用egrep。
[root@localhost grep]# egrep 'o{2}' test.txt root:x:0:0:root:/root:/bin/bash ROOT:Root:323:ererER roooooot:ewew:rooot:roooot 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是grep的拓展版本,介绍egrep的用法
- 过滤出一个或多个指定的字符
[root@localhost grep]# egrep 'o+' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
roooooot:ewew:rooot:roooot
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin[root@localhost grep]# head -5 test.txt|egrep 'oo+'
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER[root@localhost grep]# head -10 test.txt|egrep 'ooo+'
roooooot:ewew:rooot:roooot
- 过滤出零个或一个指定的字符
[root@localhost grep]# egrep 'o?' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32432:eadasd:
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin[root@localhost grep]# egrep 'ooo?' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
roooooot:ewew:rooot:roooot
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]# egrep 'oooo?' test.txt
roooooot:ewew:rooot:roooot
- 过滤出字符串1或者字符串2,使用|
[root@localhost grep]# egrep 'oo|bin|nologin' test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
|表示或者的意思
总结:使用egrep时,需要配合特殊符号去使用例如:+ ? {} ()^ $
9.4/9.5 sed
grep工具的功能还不够强大,它实现的只是查找功能,而不能把查找的内容替换。sed工具可以替换文本。
- 打印某行
sed的命令格式为sed -n ‘n’p filename,单引号内的n是一个数字,表示第几行。-n选项的作用是只显示我们要打印的行,无关的内容不显示
[root@localhost grep]# sed -n '2'p test.txt ROOT:Root:323:ererER
我们也可以把所有行都打印出来,可以使用命令sed -n ‘1,$'p filename
[root@localhost grep]# sed -n '1,$'p test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32432:eadasd:
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin这里的$表示尾行的意思
我们还可以指定一个区间打印,比如2行到5行
[root@localhost grep]# sed -n '2,5'p test.txt ROOT:Root:323:ererER bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin 32432:eadasd:
- 打印包含某个字符串的行
[root@localhost grep]# sed -n '/root/'p test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost grep]# sed -n '/root/'p test.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
我们想要不区分大小写,可以加上大写的字母I 表示
[root@localhost grep]# sed -n '/root/'Ip test.txt root:x:0:0:root:/root:/bin/bash ROOT:Root:323:ererER operator:x:11:0:operator:/root:/sbin/nologin
sed的用法跟grep用法类似,也可以使用特殊符号,这里需要加上选项-r,如果不加是打印不出来的
[root@localhost grep]# sed -nr '/o+t/'p test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
roooooot:ewew:rooot:roooot
operator:x:11:0:operator:/root:/sbin/nologin[root@localhost grep]# sed -nr '/o{2}/'p test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
roooooot:ewew:rooot:roooot
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]# sed -n '/^r/'p test.txt
root:x:0:0:root:/root:/bin/bash
roooooot:ewew:rooot:roooot[root@localhost grep]# sed -n '/in$/'p test.txt
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin[root@localhost grep]# sed -n '/r..o/'p test.txt
roooooot:ewew:rooot:roooot
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
[root@localhost grep]#[root@localhost grep]# sed -n '/ooo*/'p test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
roooooot:ewew:rooot:roooot
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
sed命令加上-e选项,可以实现多个行为
[root@localhost grep]# sed -e '/root/'p -e '/adm/'p -n test.txt root:x:0:0:root:/root:/bin/bash adm:x:3:4:adm:/var/adm:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin
- 删除某个行
使用选项d,这里单引号的数字表示第几行,我们在使用d选项时,并没有对我们文件本身操作去删除,如果想要彻底删除某一行,需要加上-i选项
[root@localhost grep]# sed '1'd test.txt
ROOT:Root:323:ererER
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32432:eadasd:
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@localhost grep]# cat test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER[root@localhost grep]# sed '1,2'd test.txt
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32432:eadasd:
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
我们也可以删除匹配某个字符的行
[root@localhost grep]# sed '/32432/'d test.txt
root:x:0:0:root:/root:/bin/bash
ROOT:Root:323:ererER
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@localhost grep]#
- 替换字符或者字符串,命令如下
[root@localhost grep]# sed '1,2s/roo/oor/g' test.txt
oort:x:0:0:oort:/oort:/bin/bash
oort:oort:qwe
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32432:eadasd:
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin这里的数字1,2表示第一二行,s表示替换的工作,参数g表示全局替换,如果不加g则只替换本行出现的第几个
- 删除文档中所有的字母或者数字
[root@localhost grep]# sed 's/[0-9]//g' test.txt
root:x:::root:/root:/bin/bash
root:root:qwe
bin:x:::bin:/bin:/sbin/nologin
daemon:x:::daemon:/sbin:/sbin/nologin
:eadasd:
roooooot:ewew:rooot:roooot
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
avahi:x:::Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:::Avahi IPvLL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x::::/etc/ntp:/sbin/nologin
nginx:x:::Nginx web server:/var/lib/nginx:/sbin/nologin[root@localhost grep]# sed 's/[a-zA-Z]//g' test.txt
::0:0::/://
::
::1:1::/://
::2:2::/://
32432::
:::
::3:4:://://
::4:7::///://
::5:0::/://
::6:0::/://
::7:0::/://
::8:12::///://
::11:0::/://
::12:100:://://
::14:50: ://://
::99:99::/://
::81:81: :/://
::999:998: :/://
::70:70: /- :///-://
-::170:170: 4 :///-://
::89:89::///://
::74:74:- :///://
::38:38:://://
::998:997: :///://
- 调换二个字符串的位置
[root@localhost grep]# sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/' test.txt
bash:x:0:0:root:/root:/bin/root
root:root:qwe
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32432:eadasd:
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin小括号在sed中属于特殊特殊符号,必须在前面加转义字符\,替换时则写成类似\1 \2 \3的形式,上例中()把想要替换的字符打包成一个整体。有这个转义字符\,会让这个表达式有点乱,可以简单写法。[root@localhost grep]# sed -r 's/(bash)(.*)(root)/\3\2\1/' test.txt
root:x:0:0:root:/root:/bin/bash
root:root:qwe
bin:x:1:1:bin:/bin:/sbin/nologin
- 在某一行前后增加指定内容
[root@localhost grep]# sed 's/^.*$/123&/' test.txt
123root:x:0:0:root:/root:/bin/bash
123root:root:qwe
123bin:x:1:1:bin:/bin:/sbin/nologin
123daemon:x:2:2:daemon:/sbin:/sbin/nologin
12332432:eadasd:
123roooooot:ewew:rooot:roooot
123adm:x:3:4:adm:/var/adm:/sbin/nologin
123lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
123sync:x:5:0:sync:/sbin:/bin/sync
123shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
123halt:x:7:0:halt:/sbin:/sbin/halt
123mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
123operator:x:11:0:operator:/root:/sbin/nologin
123games:x:12:100:games:/usr/games:/sbin/nologin
123ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
123nobody:x:99:99:Nobody:/:/sbin/nologin
123dbus:x:81:81:System message bus:/:/sbin/nologin
123polkitd:x:999:998:User for polkitd:/:/sbin/nologin
123avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
123avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
123postfix:x:89:89::/var/spool/postfix:/sbin/nologin
123sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
123ntp:x:38:38::/etc/ntp:/sbin/nologin
123nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin[root@localhost grep]# sed -r 's/(.*)/aaa&/' test.txt
aaaroot:x:0:0:root:/root:/bin/bash
aaaroot:root:qwe
aaabin:x:1:1:bin:/bin:/sbin/nologin
aaadaemon:x:2:2:daemon:/sbin:/sbin/nologin
aaa32432:eadasd:
aaaroooooot:ewew:rooot:roooot
aaaadm:x:3:4:adm:/var/adm:/sbin/nologin
aaalp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
aaasync:x:5:0:sync:/sbin:/bin/sync
aaashutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
aaahalt:x:7:0:halt:/sbin:/sbin/halt
aaamail:x:8:12:mail:/var/spool/mail:/sbin/nologin
aaaoperator:x:11:0:operator:/root:/sbin/nologin
aaagames:x:12:100:games:/usr/games:/sbin/nologin
aaaftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
aaanobody:x:99:99:Nobody:/:/sbin/nologin
aaadbus:x:81:81:System message bus:/:/sbin/nologin
aaapolkitd:x:999:998:User for polkitd:/:/sbin/nologin
aaaavahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
aaaavahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
aaapostfix:x:89:89::/var/spool/postfix:/sbin/nologin
aaasshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
aaantp:x:38:38::/etc/ntp:/sbin/nologin
aaanginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
9.6/9.7 awk
awk也是流式编辑器,针对文档中的行来操作,一行一行的去执行,awk兼容sed的所有功能,而且非常强大。
- 截取文档中的某个段
[root@localhost grep]# head -n2 test.txt|awk -F ':' '{print $1}' root root
上例中,-F表示指定分隔符,如果不加-F选项,则以空格或者tab分分隔符。print为打印的动作,用来打印某一段。$1为第一段,$2为第二段,但是$0表示整行
[root@localhost grep]# head -n2 test.txt|awk -F ':' '{print $0}' root:x:0:0:root:/root:/bin/bash root:root:qwe
print还可以打印自定义的内容,但是自定义的内容需要双引号括起来
[root@localhost grep]# head -n2 test.txt|awk -F ':' '{print $1"#"$2"#"$3"#"}'
root#x#0#
root#root#qwe#
- 匹配字符串或者字符
[root@localhost grep]# awk '/oo/' test.txt
root:x:0:0:root:/root:/bin/bash
root:root:qwe
roooooot:ewew:rooot:roooot
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]# awk -F ':' '$1 ~/oo/' test.txt root:x:0:0:root:/root:/bin/bash root:root:qwe roooooot:ewew:rooot:roooot
- awk还以使用多次匹配
[root@localhost grep]# awk -F ':' '/root/ {print $1,$2} /nologin/ {print $2,$9}' test.txt
root x
root root
x
- 条件操作符
[root@localhost grep]# awk -F ':' '$3=="0"' test.txt root:x:0:0:root:/root:/bin/bash
awk中可以用逻辑符号进行判断,比如==就是等于,也可以理解为精准匹配。还有> >= < <= !=等。注意的是,在和数字比较时,若把数字用双引号引起来,那么awk不会认为是数字,而会认为是字符,不加双引号则会认为是数字。举例说明
[root@localhost grep]# awk -F ':' '$3>="500"' test.txt
root:root:qwe
roooooot:ewew:rooot:roooot
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
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin[root@localhost grep]# awk -F ':' '$3>=500' test.txt
root:root:qwe
roooooot:ewew:rooot:roooot
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@localhost grep]#
第一个例子,没有得到我们想要的结果,而第二个才是我们想要的结果,这就是数字加不加双引号的区别
- 使用!=表示不匹配。
[root@localhost grep]# awk -F ':' '$7!="/sbin/nologin"' test.txt
root:x:0:0:root:/root:/bin/bash
root:root:qwe
32432:eadasd:
roooooot:ewew:rooot:roooot
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
我们还可以在二个段之间进行比较
[root@localhost grep]# awk -F ':' '$3<$4' test.txt
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
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
另外还可以使用&& || ,他们分别表示并且和或者。&&的用法
[root@localhost grep]# awk -F ':' '$3<"4" && $5>"5"' test.txt
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
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
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
||的使用
[root@localhost grep]# awk -F ':' '$3>500 || $1=="root"' test.txt
root:x:0:0:root:/root:/bin/bash
root:root:qwe
roooooot:ewew:rooot:roooot
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
- awk的内置变量
awk的内置变量有OFS NF NR OFS和-F选项有类似的功能,也就是定义分隔符,但是它是在输出的时候定义,NF表示用分隔符分隔后一共有多少段,NR表示行号
[root@localhost grep]# head -n5 test.txt|awk -F ':' '{OFS="#"} {print $1,$3,$4}' root#0#0 root#qwe# bin#1#1 daemon#2#2 32432##
还有高级的用法,if
[root@localhost grep]# awk -F ':' '{OFS="#"} {if ($3>30) {print $1,$3,$4}}' test.txt
root#qwe#
roooooot#rooot#roooot
nobody#99#99
dbus#81#81
polkitd#999#998
avahi#70#70
avahi-autoipd#170#170
postfix#89#89
sshd#74#74
ntp#38#38
nginx#998#997
变量NF的用法
[root@localhost grep]# head -n5 test.txt|awk -F ':' '{print NF}' 7 3 7 7 3[root@localhost grep]# head -n5 test.txt|awk -F ':' '{print $NF}' /bin/bash qwe /sbin/nologin /sbin/nologin
这里的NF是多少段,$NF是最后一段的值,变量NR的具体用法
[root@localhost grep]# head -n5 test.txt|awk -F ':' '{print NR}' 1 2 3 4 5
我们还可以使用NR作为判断条件
[root@localhost grep]# awk 'NR>1' test.txt
root:root:qwe
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
32432:eadasd:
roooooot:ewew:rooot:roooot
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
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:997:Nginx web server:/var/lib/nginx:/sbin/nologin
- awk中数学运算、
- awk可以更改段值
[root@localhost grep]# head -n3 test.txt|awk -F ':' '$1="root"' root x 0 0 root /root /bin/bash root root qwe root x 1 1 bin /bin /sbin/nologin
awk也可以对各个段进行数学运算
[root@localhost grep]# head -n3 test.txt|awk -F ':' '{$7=$3+$4; print $0}' root x 0 0 root /root 0 root root qwe 0 bin x 1 1 bin /bin 2
awk还可以计算某个段的总和
[root@localhost grep]# awk -F ':' '{(tot=tot+$3)}; END{print tot}' test.txt 2691
这里的END是awk特有的语法,表示所有的行都已经执行,