linux的awk使用

awk统计password文件中,登陆shell为“/sbin/nologin”的用户个数

[root@localhost ~]# cat passwd | grep "/sbin/nologin"
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
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

#方法一

[root@localhost ~]# cat passwd | grep "/sbin/nologin"| wc -l     
16

#方法二

[root@localhost ~]# awk -F: '{for(i=1;i<=NF;i++){if($i=="/sbin/nologin"){n++}}}END{print n}' passwd
16

#方法三

[root@localhost ~]# awk -F: '{shells[$7]++} END{for(i in shells){if(i=="/sbin/nologin"){print shells[i],i}}}' passwd
16  /sbin/nologin

 

只打印文件的奇数行

[root@localhost linshi]# seq 1 10 > c.txt && seq 1 10 >> c.txt

[root@localhost ~]# awk '{a[NR]=$0}END{for(i=1;i<=NR;i+=2){print i,a[i]}}' c.txt
1 1
3 3
5 5
7 7
9 9
11 1
13 3
15 5
17 7
19 9

[root@localhost ~]# awk '{a[NR]=$0}END{for(i in a){print i,a[i]}}' c.txt | wc -l
20

[root@localhost linshi]# awk '{a[NR]=$0}END{for(i in a){print i,a[i]}}' c.txt
17 7
4 4
18 8
5 5
19 9
6 6
7 7
8 8
9 9
10 10
20 10
11 1
12 2
13 3
14 4
1 1
15 5
2 2
16 6
3 3

#默认是按照awk算法所得到的结果进行排序

 

你可能感兴趣的:(linux的awk使用)