我有一个未排序的 IP 列表,需要对其进行计数并按出现次数进行排序。
我用过sort -n | uniq -c | sort -n
,效果很好,但我想要更便宜的东西......肯定awk
可以做到这一点吗?
输入
1.1.1.1
2.2.2.2
1.1.1.1
3.3.3.3
2.2.2.2
1.1.1.1
输出
3 1.1.1.1
2 2.2.2.2
1 3.3.3.3
答案1
与单awk过程:
awk '{ a[$1]++ }END{ for(i in a) print a[i],i }' file
输出:
3 1.1.1.1
2 2.2.2.2
1 3.3.3.3
要输出按出现次数降序排列的记录,请使用以下 GNUawk方法:
awk 'BEGIN{ PROCINFO["sorted_in"]="@val_num_desc" }{ a[$1]++ }
END{ for(i in a) print a[i],i }' file