AWK - 将两个特定列中的多行合并为一行?

时间:2014-07-02 11:54:46

标签: printing awk merge printf

这里有新手..我很困惑如何在特定列中合并多行并打印成一行。例如,我在.csv文件中有这种数据(用逗号分隔):

ID1,X1,X2,X3,X4,X5,X6,T,C
ID2,X1,X2,X3,X4,X5,X6,G,A
ID3,X1,X2,X3,X4,X5,X6,C,G
ID4,X1,X2,X3,X4,X5,X6,A,A

我计划每行仅选择第8列和第9列,并将它们全部打印在一行中并使用空格分隔,以便结果如下:

T C G A C G A A

为此,我尝试使用AWK代码:

awk -F "," '{printf "%s ",$8, "%s ",$9}' FILE > outputfile

但是它给了结果所有在col 8th之间的合并然后在col 9th中的所有:

T G C A C A G A

非常欢迎任何建议。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

像这样?

kent$  awk -F, '{t=$8 OFS $9;s=s?s OFS t:t}END{print s}' file 
T C G A C G A A

答案 1 :(得分:1)

试试这个awk

awk -F "," '{printf "%s %s ", $8,$9}' yourfile