下面是我创建表的代码
awk -v server=${svr} 'BEGIN{
FS=","
print "=============================="
printf "<h3>ServerName:%s</h3>", server
print "=============================="
print "<HTML>""<TABLE border="1">"
}
{
printf "<TR>"
for(i=1;i<=NF;i++)
{
printf "%s", "<td"
if ($i+0==3) printf " bgcolor=#FF3333"
print ">" $i "
elif print ">" ok " bgcolor=#99FF33"</td>"
}
print "</TR>"
}
END{
print "</TABLE></BODY></HTML>"
}
在这里,我要尝试的是如果$ i + 0为3,则仅打印表中的值,否则,如果非值是3,则应以bgcolor将$ i + 0的值打印为“ OK”。 >
如您所见,我正在尝试使用elif进行操作,但似乎没有用。
请让我知道如何完成
答案 0 :(得分:0)
通过更仔细地查看您的代码,我现在已解决了以下问题。
print ">" $i "
更改为print > "$i"
,否则可能不确定您是否已测试或仅编写了这段代码,从而导致语法错误。>
行中添加了printf "%s", "<td"
。在</td>
值之后的if
条件下添加了bg
,以完成该表的特定行的单元格。
首先将此(print ">" ok " bgcolor=#99FF33"</td>"
)更改为print "> ok bgcolor=#99FF33</td>"
,我误解了您想在打印中使用用户变量,但似乎只想将语句打印到控制台。
将elif
更改为else
以打印正确的语句if(if
语句条件不正确)。
在'
代码的END
块之后添加了awk
。
提到的Input_file
名称也要进行编码。
固定的代码格式,以便更好地理解并使其看起来更好:)
awk -v server=${svr} '
BEGIN{
FS=","
print "=============================="
printf "<h3>ServerName:%s</h3>", server
print "=============================="
print "<HTML>""<TABLE border="1">"
}
{
printf "<TR>"
for(i=1;i<=NF;i++){
printf "%s", "<td>"
if($i+0==3){
printf "bgcolor=#FF3333</td>"
print > "$i"
}
else{
print "> ok bgcolor=#99FF33</td>"
}
}
print "</TR>"
}
END{
print "</TABLE></BODY></HTML>"
}
' Input_file