我有一个巨大的表,有成千上万的行和十列。我想根据第4列(ID)删除这些重复项,但同时保留第9列(得分)中具有最高值的重复项。
我在awk中尝试了这个简单的代码,但是显然它删除的行超出了应有的行,甚至没有选择所有重复项。
sort -rnk 9 myfile.txt | awk -F"[. ]" '!a[$4]++' >filtered.txt
我将不胜感激。我很想让它在python或perl上工作,但我还不是很擅长。
谢谢
最佳答案
您的代码看起来不错,这当然是一种聪明的方法。我会写
awk -F"\t" '
!($4 in max) || $9 > max[$4] {max[$4] = $9; line[$4] = $0}
END {for (key in line) print line[key]}
' myfile.txt
这种方法应该很容易翻译成另一种语言。
关于python - 删除重复项,但根据另一列中的排序保留一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34937407/