我想打印文件名,然后在循环中打印 $7 的值。请问有什么问题吗?使用 '"i"'
for i in r*; do
awk 'FNR == 2 {print '"i"', $7}' r* > out
done
建议后输出
fdfadfasdfa 0.00775 0.00644 6298
dsafdsfsaf 0.00705 0.00574 14173
dasfdsafdafd 0.00716 0.00597 22948
dafadsafdafsdf 0.00859 0.00679 5210
dafadsfsa 0.00705 0.00576 11098
最佳答案
能否请您尝试以下。你不需要为它使用 for
循环。
awk 'BEGIN{OFS="\t\t"} FNR==2{print FILENAME, $7}' r* | column -t > out
如果你有 GNU awk
,你可以使用 nextfile
来节省很多循环,并在条件满足时直接跳转到下一个文件,如:
awk 'BEGIN{OFS="\t\t"} FNR==2{print FILENAME, $7; nextfile}' r* | column -t > out
将 \t\t
设置为 BEGIN
部分中输出集 OFS
的制表符分隔符。添加 | column -t
在输出中得到正确的 TAB 格式。
删除 BEGIN{OFS="\t\t"}
以防不需要,因为添加了 column
命令(OP 要求在输出中使用 TAB,所以这是为它添加)。
关于bash - 如何在awk中打印文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58369574/