使用 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

通过第一个字段建立一个数组rec,将第二个字段存储在数组中,最后对结果进行排序。

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

输出:

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

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


又从另一个方向:

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

相关内容