Sort

根據不同的欄位和值進行排序

  • November 8, 2017

我有以下數據:

AD12      Ar.1       352
AD12      Ar.7       495
AD12      Ar.8       491
AD12      Ar.6       495
AD12      Ar.5       495
AD12      Ar.9       491
AD13      Ar2.1      495

我想根據第三列為第一列中的唯一 id 選擇具有最高值的行,但為第一列中的每個 id 保留最高值的重複項,例如:

AD12      Ar.7       495
AD12      Ar.6       495
AD12      Ar.5       495
AD13      Ar2.1      495

我不知道該怎麼做,我嘗試了不同的排序命令,例如:sort -r -k3,3 -k1,1,但沒有奏效。有什麼建議麼?

sort+**awk**解決方案:

sort -k1,1 -k3,3nr <file | awk '!a[$1]{ a[$1]=$3 }$3==a[$1]'
  • sort -k1,1 -k3,3nr- 按第一個欄位(正常排序)和第三個欄位(數字倒序)對行進行排序
  • !a[$1]{ a[$1]=$3 }$3==a[$1]- 對於每個唯一id $1,檢查目前記錄是否具有相同的最大值$3

輸出:

AD12      Ar.5       495
AD12      Ar.6       495
AD12      Ar.7       495
AD13      Ar2.1      495

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