我在多个文件夹中有.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
换句话说,是否有空格将同一文件夹的输出分开,而不是换行?
答案 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
。