【发布时间】:2022-01-17 17:55:05
【问题描述】:
我有许多以 txt 结尾的不同名称的文件。
rtfgtq56.txt
fgutr567.txt
..
所以我正在运行这个命令
for i in *txt
do
awk -F "\t" '{print $2}' $i | grep "K" | awk '{print}' ORS=';' | awk -F "\t" '{OFS="\t"; print $i, $1}' > ${i%.txt*}.k
done
我的问题是我想在第一列中添加每个文件的名称,所以我运行这部分:
awk -F "\t" '{OFS="\t"; print $i, $1}' > ${i%.txt*}
$i 表示 for 循环中的文件,
但它不起作用,因为 awk 无法读取 for 循环中的 $i。
你知道我该如何解决吗?
【问题讨论】:
-
能否请edit 澄清预期的输出应该是什么样子?您想要文件名、选项卡以及第二列中包含
K的行中的所有值,它们之间有分号? -
使用
awk的-v选项,可以基于shell变量创建awk变量。请参阅 awk 手册页。