将多个文件夹中的行集打印为行而不是列?

时间:2019-03-04 04:02:33

标签: unix awk

我在多个文件夹中有.out文件。

假设我位于包含文件夹A,B,C,D的目录中。我使用以下命令从文件夹A,B中所有.out文件的第8行包含关键字VALUE的行中打印特定值,C,D

awk '/VALUE/{print $8}' ./*/.out

我的结果如下:

output1_A
output2_A
output3_A

output1_B
output2_B
output3_B

output1_C
output2_C
output3_C 

有没有办法让我的输出看起来像下面显示的那样?

output1_A output2_A output3_A 
output1_B output2_B output3_B 
output1_C output2_C output3_C 

换句话说,是否有空格将同一文件夹的输出分开,而不是换行?

2 个答案:

答案 0 :(得分:1)

您能否请尝试以下操作(因为我没有目录结构,所以我无法对其进行测试,或者OP是否可以在目录内发布文件的内容,也许我们也可以在单个awk内完成)。

awk '/VALUE/{print $8}' ./*/.out | xargs -n 3

答案 1 :(得分:0)

另一个:

$ awk '/VALUE/{b=b (FNR==(NR>FNR)?ORS:ofs) $8;ofs=OFS}END{print b}' dir?/file1
output1_A output2_A output3_A
output1_B output2_B output3_B
output1_C output2_C output3_C

解释:

$ awk '
/VALUE/ {                                # magic keyword
    b=b (FNR==(NR>FNR)?ORS:ofs) $8       # gathering a buffer set ORS or OFS appropriately
    ofs=OFS                              # ... but @NR==1 we want ""
}
END {
    print b                              # output buffer
}' dir?/file1

不考虑样本中无法解释的两个空记录,但可能会在输出记录的末尾引起额外的OFS

相关问题