如何将第一列中的相同条目合并为一个条目

如何将第一列中的相同条目合并为一个条目

拥有一个文件,其中的条目遍布各处。例子:

10.11.12.13  tiger adfa afinhhdddd tiger
10.11.12.13  tiger tiger 123
10.11.12.13  tiger abc
10.11.12.13  tiger abc
10.11.12.13  TIGER ABC

20.21.22.23   hola hola hola123 upside down
20.21.22.23   hola hola hola123 upside DOWN HOLA
20.21.22.23   hola hola hola123 upside down

最终输出应如下所示:

10.11.12.13  tiger abc 123 adfa afinhhdddd
20.21.22.23  hola hola123 upside down

答案1

您似乎想要的与排序无关,但可以通过创建一个以第一列的值为键的哈希(关联数组)来实现,您将其他列的大小写转换副本推入其中 - 然后您可以将其删除- 复制并打印。以 Perl 为例

perl -MList::MoreUtils=uniq -alne '
  push @{ $h{shift @F} }, map { lc $_ } @F if $_ =~ /\S/
  }{ 
  foreach $k (sort keys %h) {
    print "$k\t", join " ", uniq @{ $h{$k} } 
  }
' file

前任。:

$ perl -MList::MoreUtils=uniq -alne '
  push @{ $h{shift @F} }, map { lc $_ } @F if $_ =~ /\S/
  }{ 
  foreach $k (sort keys %h) {
    print "$k\t", join " ", uniq @{ $h{$k} } 
  }
' file
10.11.12.13    tiger adfa afinhhdddd 123 abc
20.21.22.23    hola hola123 upside down

如果您希望数组元素的输出具有特定的顺序,那么您需要为此提供一个规则。

相关内容