2014-01-09 56 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]++'