2014-01-09 50 views
0

我有一個製表符分隔的表所示(第一行是報頭):如何使用AWK來唯一表(保持每個唯一ID的最大值)?

symbol value chr start end 
    Arrb1 10 chr1 1000 2000 
    Arrb1 20 chr1 1000 2000 
    Arrb1 30 chr1 1000 2000 
    Myc 5 chr2 3000 4000 
    Actin 3 chr4 25000 30000 
    Actin 5 chr4 25000 30000 
    . 
    . 
    . 

欲獨特表由所述第一柱(符號),並且如果有多個線爲同一符號,保持最大值(第2列)。所以結果應該如下所示:

symbol value chr start end 
    Arrb1 30 chr1 1000 2000 
    Myc 5 chr2 3000 4000 
    Actin 5 chr4 25000 30000 
    . 
    . 
    . 

我可以使用AWK嗎?謝謝!

回答

1
awk -F'\t' 'NR==1{print} 
NR>1{if(b[$1]<$2){ a[$1]=$0; b[$1]=$2 }} 
END{for(x in a)print a[x]}' file 
1

如果沒有標題。我提供一個較短的。

sort -k1,1 -k2,2nr file |awk '!a[$1]++'