2012-11-29 80 views
4

我有一個輸入的數據文件:使用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

感謝您的關注。

+0

這可能有助於讓更多的上下文。你想學習awk嗎?它是唯一可用的程序嗎? – GargantuChet

+0

http://docstore.mik.ua/orelly/unix/sedawk/ch13_09.htm還是沒有幫助? –

回答

4
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 
2
$ 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