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}

変数はFailCounterawk ブロックの外部で定義されており、-v Fail=${FailCounter}スクリプトの awk 部分に値を書き込むことはできません。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>"
}

引用符を閉じて変数名を使用して、新しい引用符を開く方法を確認してください。

おすすめ記事