Sort

您如何將第一列中的相同條目合併為一個條目

  • May 10, 2019

有一個文件,條目到處都是。例子:

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

您似乎想要的與排序無關,但可以通過創建一個以第一列的值為鍵的雜湊(關聯數組)來實現,您將其他列的大小寫轉換副本推送到其中 - 然後您將- 複製和列印。以 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

如果您希望數組元素的輸出具有特定順序,則需要為此提供規則。

引用自:https://unix.stackexchange.com/questions/518030