我有一个像这样的TAB分隔表(第一行是标题):
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吗?谢谢!
答案 0 :(得分: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 :(得分:1)
如果没有标题。我提供的是较短的一个。
sort -k1,1 -k2,2nr file |awk '!a[$1]++'