`sort -n | 的廉价版本 uniq -c | 排序-n`

Jan*_*Jan 3 performance awk sort uniq

我有一个未排序的 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
Run Code Online (Sandbox Code Playgroud)

输出

3 1.1.1.1
2 2.2.2.2
1 3.3.3.3
Run Code Online (Sandbox Code Playgroud)

Rom*_*est 8

使用单个awk进程:

awk '{ a[$1]++ }END{ for(i in a) print a[i],i }' file
Run Code Online (Sandbox Code Playgroud)

输出:

3 1.1.1.1
2 2.2.2.2
1 3.3.3.3
Run Code Online (Sandbox Code Playgroud)

要以降序输出按出现次数排序的记录,请使用以下 GNU awk方法:

awk 'BEGIN{ PROCINFO["sorted_in"]="@val_num_desc" }{ a[$1]++ }
     END{ for(i in a) print a[i],i }' file
Run Code Online (Sandbox Code Playgroud)