Sort
如何計算列表中的出現次數,然後按出現次數降序排序?
我有一個包含 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