最初の列の同じ項目を1つの項目にマージする方法

最初の列の同じ項目を1つの項目にマージする方法

アイテムを含むファイルをあちこちに分散させてください。例:

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

配列要素の出力を特定の順序で指定するには、その規則を指定する必要があります。

関連情報