Perl

根據第一列的值對單詞進行分組

  • October 20, 2014

我想根據第一列的值對所有文件內容進行分組。如果輸出是排序的形式會更好。

輸入:

1 foo
2 bar
1 foobar
2 barbar
3 apple
4 banana
3 mango
5 orange

預期輸出:

1 foo, foobar
2 bar, barbar
3 apple, mango
4 banana
5 orange

如果我理解正確,您正在尋找

perl -lane 'push @{$k{$F[0]}},$F[1]; 
           END{$"=", ";print "$_ @{$k{$_}}" for sort keys(%k)}' file

沒有理由明確分割線,-a標誌已經為你做了。它將每個輸入行拆分為@F數組。因此,在這裡我們創建了一個%k雜湊,其鍵是第一個欄位,其值是第二個欄位的相應列表。然後,最後,我們對雜湊鍵進行排序,將列表分隔符 ( $") 設置為,[space]並列印每個鍵及其對應的值列表。

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