我有一个包含 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