删除具有相同值的行

Removing rows with same values

我有一个很大的制表符分隔的文本文件,我想删除所有具有相同值的行并提取至少具有一个不同值的行;

File.txt

Gen1    1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Gen2    1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Gen3    1.0 1.0 1.0 5.0 0.55    1.0 1.0 1.0 1.0
Gen4    1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Gen5    1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Gen6    0.4353  1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

Output.txt

Gen3    1.0 1.0 1.0 5.0 0.55    1.0 1.0 1.0 1.0
Gen6    0.4353  1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

不幸的是,我无法使用以下命令获得预期的输出;

perl -ne 'print if ! $a{$_}++'

或者 sort -uuniq,它们不起作用,因为第一列的名称不同。

sort 使用从第二个字段到结束 (-k2) 的选定键:

sort -t '\t' -uk2 file.txt
  • -t '\t' 设置字段分隔符为 Tab

  • -u 根据所选键获取唯一条目

示例:

% sort -uk2 file.txt
Gen6 0.4353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Gen1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Gen3 1.0 1.0 1.0 5.0 0.55 1.0 1.0 1.0 1.0