我有一个制表符分隔的文件,我想删除仅在前三列中相同的行(保留一个副本)。我更喜欢使用unix,例如awk或uniq。

输入文件:

Supercontig_1.1 241783  286397  5677    52
Supercontig_1.1 241783  286397  5678    53
Supercontig_1.1 241783  286397  5679    53
Supercontig_1.2 10500  25700  3000    57
Supercontig_1.2 10500  25700  3001    59
Supercontig_1.2 10500  25700  3002    59
Supercontig_1.3 2000  7000  5686    60
Supercontig_1.3 2000  7000  5687    60

输出:
 Supercontig_1.1 241783  286397  5677    52
 Supercontig_1.2 10500  25700  3000    57
 Supercontig_1.3 2000  7000  5686    60

最佳答案

一种使用awk的方法:

awk '!array[$1,$2,$3]++' file.txt

结果:
Supercontig_1.1 241783 286397 5677 52
Supercontig_1.2 10500 25700 3000 57
Supercontig_1.3 2000 7000 5686 60

关于unix - 当三列相同时删除行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12950882/

10-13 07:20
查看更多