使用awk将列转换为行

时间:2012-11-29 21:12:23

标签: awk

我有一个输入数据文件:

anim   gent
FZ543     1
FZ543     2
FZ543     3
FZ543     1
FZ547     4
FZ547     3
FZ547     3
FZ547     1

我想将这些数据转换为: -

anim     gent
FZ543     1 2 3 1
FZ547     4 3 3 1

换句话说,我想将元素从垂直转换为水平。 我可以使用AWK Comand

感谢您的关注。

2 个答案:

答案 0 :(得分:5)

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

<强>输出

anim   gent
FZ543  1 2 3 1
FZ547  4 3 3 1

答案 1 :(得分:3)

$ awk '$1 != prev{printf "%s%s",ors,$1; ors=ORS; ofs="\t"} {printf "%s%s",ofs,$2; ofs=OFS; prev=$1} END{print ""}' file
anim    gent
FZ543   1 2 3 1
FZ547   4 3 3 1