awkを使用して列を行に変更する

awkを使用して列を行に変更する

私は次のリストを持っています:

AA 1
AA 2
AA 3
B 4
B 4
C 5
C 6
C 7
C 8

awkを使って次の出力に変更したいと思います。

AA 1 2 3
B 4 4
C 5 6 7 8

AWKを使ってこれを行う方法を教えてください。

答え1

最初のフィールドで配列を作成し、rec2番目のフィールドを配列に保存し、最後に結果を並べ替えます。

awk '{ rec[$1]=rec[$1] " " $2 }
END { for (key in rec) print key rec[key] }
' file.txt | sort

答え2

awk '{a[$1]=a[$1] FS $2} END{for(i in a) print i a[i]}' file

出力:

今週の集まり 1 2 3
雨4 4
種 5 6 7 8

源泉:https://stackoverflow.com/q/56716292/3776858


そして他の方向から見ると:

awk '{for(i=2;i<=NF;i++){print $1,$i}}' file

関連情報