我有这个清单:
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