我想打印外部定义的变量值awk片段。
代码片段
FailCounter=5
awk -v Fail=${FailCounter} -F, ' BEGIN {
print "<TABLE border=1>"
print "<TR><TD colspan=2> </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>"
}
请注意我需要如何关闭引号,然后使用变量名称,然后打开新引号。