Sort
列中的唯一降序排序
在給定的數據中,是否可以對每個區域進行 uniq 排序和僅列印最高命中?
給定數據
aza1 18 bcn1 16 sat2 12 lcy2 12 fra1 12 aza1 12 bcn1 10 sat2 8 lcy2 9 fra1 13 aza1 21 bcn1 2 sat2 10 lcy2 0 fra1 1
所需輸出
aza1 21 bcn1 16 sat2 12 lcy2 12 fra1 13
如果順序很重要的解決方案,僅使用sort和uniq
<INPUT_FILE sort -k 1,1 -k 2nr,2 | uniq -w4
輸出:
aza1 21 bcn1 16 fra1 13 lcy2 12 sat2 12
排序參數:
-k:按鍵排序(在本例中為列,與 -t 配對)
-n:按數字排序
-r:倒序
(可選)-t:如果您想更改鍵分隔符(預設:空格)
唯一參數:
-w:選擇前N個字元
解釋:
在您的問題中,我們需要先對第一列進行排序,然後再對第二列進行排序。所以有一個**-k 1,1後跟-k 2,2**。但是,第二個鍵**(僅)必須按數字排序,並且順序相反。因此,它應該是-k 2nr,2**。
請注意,如果 -n 或 -r 排序參數在 -k 參數之外,它們將應用於整個輸入而不是特定鍵。
最後,我必須找到唯一的行,但只匹配前 4 個字元。因此,uniq -w 4