这是我的awk语句的片段。我试图在语句中插入这两个变量但是没有得到评估。有人能指出我正确的方向吗?
ZONE=`date "+%Z %Y"`
DAY=`date "+%a"`
awk '{if (NR<2) {print "["$1, $2, $3"]"}}'
我正在尝试这个:
awk '{if (NR<2) {print "[" $DAY, $1, $2, $3, $ZONE "]"}}'
此提示有助于解决我的问题。
保护shell变量不被awk用&#34;&#39;&#34; (即双引号 - 单引号 - 双引号)。
awk&#39; {print&#34;&#39;&#34; $ VAR1&#34;&#39;&#34;,&#34;&#39;&#34; $ VAR2& #34;&#39;&#34;}&#39; INPUT_FILE
答案 0 :(得分:14)
您可以使用-v选项:
ZONE=`date "+%Z %Y"`
DAY=`date "+%a"`
awk -vzone="$ZONE" -vday="$DAY" 'BEGIN { print zone, day }'
答案 1 :(得分:1)
如果这些变量用单引号括起来,则不会扩展。考虑在最外面的引号中使用双引号,并在awk表达式中使用双引号转义。
我只是在这里猜测,因为你似乎没有包含你在嵌入变量时使用的实际命令,但是没有被评估。
将来,或者如果这个答案没有帮助,请考虑包括您使用的命令及其输出以及您希望发生的事情的解释。这样,弄清楚你的意思就容易多了。
答案 2 :(得分:0)
我喜欢yazu上面的回答,虽然要在我的MaxOSX(BSD)环境中使用它,我不得不调整语法:
~ $ ZONE=`date "+%Z %Y"`
~ $ DAY=`date "+%a"`
~ $ awk -v zone="$ZONE" -v day="$DAY" 'BEGIN { print zone, day }'
CEST 2018 Wed