このようなデータがあります。
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
それ以外の場合は、その値を最初の値として追加します。