[root@test tmp]# cat /tmp/ns.log
a 1
a 3
b 2
c 1
[root@test tmp]# awk '{appear[$1]++;if(all[$2] != 1) {all[$2]=1;sum[$1]++}else{sum[$1] = 0}}END{ for (i in appear) {print i, appear[i], sum[i]} }' /tmp/ns.log
a 2 2
b 1 1
c 1 0
解析
要統(tǒng)計(jì) ns.log 文件中 第一列出現(xiàn)的次數(shù),第二列中按照第一列分組在整列中沒(méi)有重復(fù)的次數(shù)。
以 ns.log 為例。
a 出現(xiàn) 2 次梆造。a 后的 1、3 在整個(gè)第二列中沒(méi)有重復(fù)缝呕,那么沒(méi)有重復(fù)數(shù)據(jù)就是 2 個(gè)澳窑。
b 出現(xiàn) 1 次。b 后的 2 在整個(gè)第二列中也沒(méi)用重復(fù)供常,那么沒(méi)有重復(fù)的數(shù)據(jù)就是 1 個(gè)摊聋。
c 出現(xiàn) 1 次。 c 后的 1 已經(jīng)出現(xiàn)過(guò)了栈暇。那么沒(méi)有重復(fù)的數(shù)據(jù)就是 0
所以與其結(jié)果為
a 2 2
b 1 1
c 1 0
上代碼
awk '{appear[$1]++;if(all[$2] != 1) {all[$2]=1;sum[$1]++}else{sum[$1] = 0}}END{ for (i in appear) {print i, appear[i], sum[i]} }' /tmp/ns.log
appear
記錄第一列元素出現(xiàn)的次數(shù)
all
第二列元素做 key-value 記錄
sum
記錄第一列元素對(duì)應(yīng)的第二列元素沒(méi)有出現(xiàn)在 all
中的次數(shù)