统计passwd文件每个单词出现的次数,这里以前5行为例
[root@web01 ~]# head -5 /etc/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
【思路】
【直接用awk数组的2次for循环】
[root@web01 ~]# head -5 /etc/passwd | awk -F "[:/]" '{for (i=1;i<=NF;i++) S[$i]++}END{for (key in S) print key,S[key]}'
4 2
10
7 1
nologin 4
bin 4
x 5
adm 3
sbin 5
bash 1
spool 1
var 2
0 2
1 2
lpd 1
2 2
daemon 2
root 3
lp 2
3 1
【先把数据处理成一列 -tr】
[root@web01 ~]# head -5 /etc/passwd|tr "[:/]" "\n"|sed '/^$/d'
【用awk的内置变量RS做成一列】
[root@web01 ~]# head -5 /etc/passwd|awk -vRS="[:/\n]+" '{print $0}'
【接下来就可以用awk单次for循环,也可以用sort+uniq处理】