删除文本文件中的重复条目

删除文本文件中的重复条目

我正在用命令进行一些排序uniq -d。它没有给我带来想要的结果。

我的文件是这样的:

>TCONS_00000066 174     206  33
>TCONS_00000066 210     281  72
>TCONS_00000066 227     316  90
>TCONS_00000066 285     338  54
>TCONS_00000066 335     373  39
>TCONS_00000066 342     377  36
>TCONS_00006042 493     552  60
>TCONS_00006042 562     606  45
>TCONS_00006042 630     686  57
>TCONS_00006042 622     699  78
>TCONS_00006042 614     724  111
>TCONS_00006042 696     767  72

我想删除第 1 列中的重复项

输出:

     >TCONS_00000066
     >TCONS_00006042

但我每次都会得到一个空白文件

uniq -d 文件 > 新文件

还有其他办法吗?

答案1

Uniq 不会排序,也不会删除该行的其余部分。uniq -d只显示重复的行,这与每行显示一次不同(即-d它必须出现两次,并且连续显示)

首先切掉不感兴趣的列,然后排序,然后找到唯一元素:

cut -d ' ' -f 1 your_file | sort | uniq

答案2

您可以使用 awk:

awk '!x[$1]++ { print $1 }' file

答案3

uniq -d仅列出输入中的重复行;由于您的文件不包含重复行(整体考虑),因此它不会输出任何内容。

要获得您想要的结果,您需要提取第一列并进行过滤:

cut -d\  -f1 file | uniq

假设您的文件已排序(uniq仅过滤重复的相邻行);否则

cut -d\  -f1 file | sort -u

awk或者你可以按照指出的那样来做塔列津,有一个轻微的变体,仅输出第一列:

awk '!x[$1]++ { print $1 }' file

相关内容