【问题标题】:AWK - Merge multiple lines in two particular columns into one line?AWK - 将两个特定列中的多行合并为一行?
【发布时间】:2014-07-02 20:06:41
【问题描述】:

这里的新手.. 我很困惑如何合并特定列中的多行并打印成一行。例如我在 .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

但结果是第 8 列中的所有内容与第 9 列中的所有内容合并:

T G C A C A G A

非常欢迎任何建议。

非常感谢您的热心帮助。

【问题讨论】:

    标签: printing awk merge printf


    【解决方案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
    

    【讨论】:

    • 我不知道为什么,但它给出的结果不是一行,而是两列四行.. :(
    【解决方案2】:

    试试这个awk:

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

    【讨论】:

    • 这会在输出中留下一个尾随空格并且没有结束换行符吗?
    • 我不知道为什么,但它也给出的结果不是一行,而是两列四行.. :(
    猜你喜欢
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2022-01-09
    • 2023-02-10
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多