awk脚本中的整数变量

时间:2014-09-26 15:06:36

标签: shell awk

我在shell脚本中有以下代码:首先计算列数(变量numCol),然后将其插入awk中的for循环中以检查每行中的所有值是否都为0:< / p>

numCol=$(awk '{print NF}' $line | head -n 1)$
awk '{for (i=1; i<=$numCol; ++i) if($i != 0) {print;next}}' $line$

但是,我收到了这个错误:awk: illegal field $(), name "numCol"

2 个答案:

答案 0 :(得分:2)

$numCol shell变量传递给awk使用-v选项:

awk -v numCol=$numCol '{for (i=1; i<=numCol; ++i) if($i != 0) {print;next}}'

但是,如果您显示一些示例输入/输出数据,那么我们可以在一个步骤中执行此操作。

答案 1 :(得分:2)

你搞砸了shell变量和awk变量

这个例子告诉所有人:

awk -v awkVar="$shellVar" '{for(i=1;i<=awkVar;i++)...}' ...

名称可能不同,但您应该知道应该在哪个上下文中使用哪个变量。