awk 打印变量值

awk 打印变量值

我想打印外部定义的变量值awk片段。

代码片段

FailCounter=5

awk -v Fail=${FailCounter} -F, ' BEGIN {
        print "<TABLE border=1>"
        print "<TR><TD colspan=2> &nbsp;</font></TD></TR>"
} NR == 1 {
        print "<TR><TH colspan=2 bgcolor=\\#FECACA><font face=verdana size=3 color=black>Failed Status Summary</font></TH></TR>"
        print "<TR><TH bgcolor=\\#B7B1B1><font face=verdana size=3 color=black>" $1 "</font></TH>"
        print "<TH bgcolor=\\#B7B1B1><font face=verdana size=3 color=black>" $2 "</font></TH></TR>"
} NR > 1 {
        print "<TR><TD><font face=verdana size=3>" $1 "</font></TD>"
        print "<TD><font face=verdana size=3>" $2 "</font></TD></TR>"
} END {
        print "<TR><TD>Total</TD><TD>${FAIL}</TD></TR>"
        print "</TABLE>"
} ' ${ScanOutage} >> ${OutputFile}

FailCounter变量是在 awk 块之外定义的,我无法在awk 脚本的部分-v Fail=${FailCounter}中写入值。END它只是按原样打印。

请帮我解决这个问题。

电流输出

<TR><TD>Total</TD><TD>${FAIL}</TD></TR>

预期输出

<TR><TD>Total</TD><TD>5</TD></TR>

答案1

其中awk$foo并不表示“名为变量的值foo”,而是表示“编号为变量值的字段foo”。如果您想引用变量,则不要使用$.例如:

$ echo "aa bb cc" | awk -v field=3 '{ print "field number",field, "is:",$field }'
field number 3 is: cc

因此,在您的情况下,为了打印出Fail您在命令行上定义的 awk 变量的值,您需要print Fail而不需要$Fail,当然也不需要,${FAIL}因为您没有调用任何变量FAIL(事物区分大小写)。所以你可能正在寻找这样的东西:

END{
   print "<TR><TD>Total</TD><TD>"Fail"</TD></TR>"
   print "</TABLE>"
}

请注意我需要如何关闭引号,然后使用变量名称,然后打开新引号。

相关内容