AWK脚本来验证带有字段的行号

时间:2018-07-28 14:46:47

标签: shell awk

我下面有$('#items').append(html); 脚本,该脚本以表格格式发送电子邮件。 awk脚本的输入是管道分隔文件。

awk

管道分隔文件的内容:

awk 'BEGIN{ 
FS="|"
print  "<HTML>""<TABLE border="1"><TH>Expected_code</TH><TH>Expected_Values</TH>"
}

{
  printf "<TR>"
  for(i=1;i<=NF;i++)
  printf "<TD>%s</TD>", $i
  print "</TR>"
}

END{
print "</TABLE></BODY></HTML>"}
' query_results > file.html

看上面的数据集,我需要以一种方式更改ABC|500 XYZ|300 TET|200 SCT|10 ASA|csr 脚本

  1. 每次都会检查行号awk和第二个字段(这里是 4)是否为10,如果其值为> 0,则将背景颜色更改为红色。

  2. 每次都会检查行号> 0和第二个字段(这里是 5)是否为非null字段。如果它不是一个空字段,则将背景颜色更改为红色。

1 个答案:

答案 0 :(得分:1)

您如何看待这种方式? :

awk -v RS="[|\n]" -v ORS="" '
BEGIN{print "<HTML><TABLE border=\"1\"><TH>Expected_code</TH><TH>Expected_Values</TH>\n"}
NR % 2{print "<TR><TD>" $0 "</TD>"}
!(NR%2){t="<TD>";if(( (NR == 8 || NR == 26) && $0 > 0) || ( (NR == 10 || NR == 28) && $0 != null) )t="<TD bgcolor=\"#FF0000\">"
print t $0 "</TD></TR>\n"}
END{print "</TABLE></BODY></HTML>"}'  query_results > outputfile;

通过这种方式,我只是想避免使用for句子。