我有一个如下文件:
ENSG00000197111:I12 0
ENSG00000197111:I12 1
ENSG00000197111:I13 0
ENSG00000197111:I18 0
ENSG00000197111:I2 0
ENSG00000197111:I3 0
ENSG00000197111:I4 0
ENSG00000197111:I5 0
ENSG00000197111:I5 1
我有一些重复的行,但我无法通过排序-u删除,因为第二列具有不同的值(1或0)。如何通过将第二列的行保持为1来删除此类重复项,以使文件为
ENSG00000197111:I12 1
ENSG00000197111:I13 0
ENSG00000197111:I18 0
ENSG00000197111:I2 0
ENSG00000197111:I3 0
ENSG00000197111:I4 0
ENSG00000197111:I5 1
答案 0 :(得分:1)
如果订单不是强制性的,您可以使用awk
和or
运算符
awk '{d[$1]=d[$1] || $2}END{for(k in d) print k, d[k]}' file
你得到了
ENSG00000197111:I2 0
ENSG00000197111:I3 0
ENSG00000197111:I4 0
ENSG00000197111:I5 1
ENSG00000197111:I12 1
ENSG00000197111:I13 0
ENSG00000197111:I18 0
修改,仅sort
解决方案
你可以sort
使用双遍,例如
sort -k1,1 -k2,2r file | sort -u -k1,1
你明白了,
ENSG00000197111:I12 1
ENSG00000197111:I13 0
ENSG00000197111:I18 0
ENSG00000197111:I2 0
ENSG00000197111:I3 0
ENSG00000197111:I4 0
ENSG00000197111:I5 1