Sort

列中的唯一降序排序

  • May 9, 2019

在給定的數據中,是否可以對每個區域進行 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

如果順序很重要的解決方案,僅使用sortuniq

<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

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