我只想在我的awk代码中使用两个for循环变量,但是不能。请帮助或指导我正确的方向。
for i in {30,60,100};
do
for j in {7,8};
do
awk -v x=$i -v y=$j '{if ($NF <=x) print $0}' S_$i.txt > S_$i_$j.txt;
done;
done
这是我收到的错误。
awk: fatal: cannot open file S_.txt for reading (No such file or directory). I saw this error.
S_$i_$j.txt
正在尝试访问名为的变量$i_
。使用S_${i}_${j}.txt
代替但还要始终引用您的shell变量,因此它实际上应该是:
awk -v x="$i" -v y="$j" '{if ($NF <= x) print $0}' "S_${i}.txt" > "S_${i}_${j}.txt"
或更笨拙地:
awk -v x="$i" -v y="$j" '$NF <= x' "S_${i}.txt" > "S_${i}_${j}.txt"
并请注意,您永远不会y
在awk脚本内使用,因此它可能是:
awk -v x="$i" '$NF <= x' "S_${i}.txt" > "S_${i}_${j}.txt"
但是还不清楚为什么要在每个内部循环中创建输出的2个副本。
但是,无论您做什么,几乎可以肯定,通过一次调用awk可以比在shell循环中多次调用它快得多!
您所问的问题与for loop variables in my awk code
btw绝对无关,这全是shell的基础知识。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句