Bash 在awk语句中插入变量

Bash 在awk语句中插入变量,bash,awk,Bash,Awk,这是我的awk语句的一个片段。我试图在语句中插入这两个变量,但它们没有得到计算。有人能给我指出正确的方向吗 ZONE=`date "+%Z %Y"` DAY=`date "+%a"` awk '{if (NR<2) {print "["$1, $2, $3"]"}}' ZONE=`date“+%Z%Y”` 日期=`date“+%a”` AWK { if(NR<P>)这些变量将不会被扩展到单引号中。请考虑使用双引号为您的最外引号和在AWK表达式中的双引号避免。 不过,我只是在这里猜测,因

这是我的awk语句的一个片段。我试图在语句中插入这两个变量,但它们没有得到计算。有人能给我指出正确的方向吗

ZONE=`date "+%Z %Y"`
DAY=`date "+%a"`

awk '{if (NR<2) {print "["$1, $2, $3"]"}}'
ZONE=`date“+%Z%Y”`
日期=`date“+%a”`

AWK { if(NR<P>)这些变量将不会被扩展到单引号中。请考虑使用双引号为您的最外引号和在AWK表达式中的双引号避免。

不过,我只是在这里猜测,因为您似乎没有包括您在嵌入变量时使用的实际命令,但没有对其进行评估

将来,或者如果这个答案不起作用,考虑一下你所使用的命令以及它的输出,以及对你所期望发生的事情的解释。这样,你会更容易理解你的意思。

< P>你可以使用-V选项:

ZONE=`date "+%Z %Y"`
DAY=`date "+%a"`
awk -vzone="$ZONE" -vday="$DAY" 'BEGIN { print zone, day }'

我喜欢上面yazu的回答,不过为了让它在我的MaxOSX(BSD)环境中工作,我必须调整语法:

~ $ ZONE=`date "+%Z %Y"`
~ $ DAY=`date "+%a"`
~ $ awk -v zone="$ZONE" -v day="$DAY" 'BEGIN { print zone, day }'
CEST 2018 Wed

你想把它们插入哪里?你到底做了什么?awk'{如果(nr)不在评论中发布代码,编辑你的问题以添加细节。(这次是为你做的。)这通常也会使awk脚本本身比依赖脚本中扩展的shell变量更干净。此外,在awk脚本作为单独文件(awk-f scripfile.awk)提供的情况下,这也会起作用。
~ $ ZONE=`date "+%Z %Y"`
~ $ DAY=`date "+%a"`
~ $ awk -v zone="$ZONE" -v day="$DAY" 'BEGIN { print zone, day }'
CEST 2018 Wed