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>"
}

따옴표를 닫고 변수 이름을 사용한 다음 새 따옴표를 여는 방법을 확인하세요.

관련 정보