Sort

如何計算列表中的出現次數,然後按出現次數降序排序?

  • July 16, 2019

我有一個包含 1601 行的列表,在每一行上,我有興趣計算欄位 5 出現不同值的次數。

這是我到目前為止所擁有的:

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

這給了我一個 uniq 值列表,以及它們各自的計數。但我想對這個列表進行排序。我一直在看到討論鍵和值的答案,但尚不清楚如何將其應用於我的案例。

感謝您提前提供任何幫助。

您只是sort -b -n在管道末尾缺少 a (作為它的另一個階段):

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

sort -b -n將對管道早期階段產生的行進行數字排序(忽略前導空白)。如果兩行開頭的編號相同,則將執行這些行的字典順序。

只需按列再次排序。使用 -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

引用自:https://unix.stackexchange.com/questions/530253