如何计算列表中的出现次数,然后按出现次数降序排序?

如何计算列表中的出现次数,然后按出现次数降序排序?

我有一个包含 1601 行的列表,在每一行中,我感兴趣的是计算字段 5 中出现不同值的次数。

这是我到目前为止所拥有的:

awk '{print$5}' FILE  | sort | uniq -c

这给我的是一个 uniq 值的列表,以及它们各自的计数。但我想对这个列表进行排序。我一直看到答案讨论键和值,但尚不清楚如何将其应用到我的案例中。

感谢您提前提供的任何帮助。

答案1

sort -b -n您只是在管道末尾缺少 a (作为管道的另一个阶段):

awk '{ print $5 }' FILE  | sort | uniq -c | sort -b -n

sort -b -n将对管道早期阶段生成的行进行数字排序(忽略前导空格)。如果两行在开头具有相同的编号,则将执行行的字典顺序。

答案2

只需按列再次排序即可。使用 -k1 按第一列(出现次数)排序,使用 -k2 按第二列(值)排序:

awk '{print $5}' FILE | sort | uniq -c | sort -k1   # Sort by ascending occurrences
awk '{print $5}' FILE | sort | uniq -c | sort -k2   # Sort by ascending values

如果您需要按降序排列(-r):

awk '{print $5}' FILE | sort | uniq -c | sort -k1 -r   # Sort by descending occurrences
awk '{print $5}' FILE | sort | uniq -c | sort -k2 -r   # Sort by descending values

相关内容