当我输入:
echo "foo bar" | gawk -v var="content" '{print $var}'
我预计输出是content
.为什么foo bar
?
答案1
变量按名称引用,如 in var
,而不是$var
in awk
。$n
指的是n
第 场地:$1
对于第一个字段,$2
对于第二个...或整个记录n
== 0 ($0
是完整记录)。
这些不一定是字面数字。您可以使用$(1+1)
或$variable
。如果variable
包含1
,则将$variable
是第一个字段。常用的是$NF
最后一个字段(NF
是包含字段数量的特殊变量)。
如果像您的示例一样,变量不包含数字,那么非数被理解为0。
因此var="content"; print $var
, 与 相同var=0; print $var
,因此与 相同print $0
,即打印整个记录。
你在这里想要的是:
echo "foo bar" | gawk -v var="content" '{print var}'