同じ最後の列に基づいて行にグループ化

同じ最後の列に基づいて行にグループ化

このようなデータがあります。

15 23
16 23
17 24
18 24

最後の列のデータに基づいて、最初の列のデータを結合/グループ化したいと思います。

15 16 23
17 18 24

どうすればいいですかawk

ベストアンサー1

そしてawk

awk '{ seen[$2]= seen[$2]? seen[$2]FS$1:$1 } 
    END{ for (x in seen) print seen[x], x }' infile
15 16 23
17 18 24

seenここでは、列のキー$2と列の値を含む配列を使用します$1。各値のキーが$2同じ場合、値は配列の前の値の末尾に追加され、END最後の値が最初に印刷され、次にそのキーが印刷されます。

三項条件は、そのキーの前に配列に値があることを確認するために使用されます。その場合は、新しい値をデフォルト値の末尾に追加します。F生産するSFSそれ以外の場合は、その値を最初の値として追加します。

おすすめ記事