【问题标题】:Issues with AWK scripting for HTML tagsHTML 标记的 AWK 脚本问题
【发布时间】:2018-07-28 01:26:46
【问题描述】:

以下是数据文件(结果)内容-

13450708,13470474,US,15

24954,24845,JPN,44

14258992,14365059,US,4

24954,24845,IND,44

我想以表格格式将上述数据集发送到电子邮件。为此,我使用下面的 awk 脚本。 现在我在这里面临的挑战是 - 如果数据集中的最后一个字段(即这里的 15、44、4、44)> 40,我想将背景颜色设为红色。 你能告诉我如何在下面的代码中使用它。

awk 'BEGIN{

FS=","

print  "<HTML>""<TABLE border="1"><TH>Store_count</TH><TH>Store_sold</TH><TH>Store_code</TH><TH>Backlogs</TH>"

}

 {

printf "<TR>"

for(i=1;i<=NF;i++)

printf "<TD>%s</TD>", $i

print "</TR>"

 }

END{

print "</TABLE></BODY></HTML>"

 }

' results > file1.html

【问题讨论】:

  • Google 我猜是“为 html 表格单元格设置背景颜色”之类的东西。你试过了吗?
  • 我也可以从下面的链接中看到一些东西。
  • 但是这里的问题是如何从我的 awk 脚本中提取字段,然后进行一些检查,然后将背景设置为红色。
  • 谁能在这里提出建议。

标签: shell awk


【解决方案1】:

我真的不明白你为什么要为此苦苦挣扎,因为你似乎已经掌握了所有信息来做你想做的事,但无论如何 - 只是改变:

printf "<TD>%s</TD>", $i

printf "<TD%s>%s</TD>", ( (i==NF) && ($i > 40) ? " style=\"background-color:red\"" : "" ), $i

或者如果你不喜欢三元表达式:

printf "<TD"
if ( (i==NF) && ($i > 40) ) {
    printf " style=\"background-color:red\""
}
printf ">%s</TD>, $i

或类似的。

【讨论】:

  • 感谢 Ed 四的建议。根据我需要检查第 4 个字段是否 > 44 的要求,我修改了代码,但仍然无法正常工作。printf "%s", ($4 > 40 ? " style =\"背景色:红色\"" : ""), $i
  • 谁能在这里提出建议
  • 告诉我们它“不工作”的原因,以便我们帮助您找出导致它“不工作”的原因。
  • 最初的要求是检查最后一个字段($4)是否 > 40,如果 > 40 则将背景颜色设为红色。因此,如果我将使用上面的代码,则所有行都将转换为红色,而与条件无关。如果 $4 > 40 条件,你能重写我的代码吗?
  • 您在问如何将条件从NF==4 更改为NF==4 &amp;&amp; $4&gt;40?当然,完成。请参阅stackoverflow.com/help/someone-answers 了解下一步该做什么。
【解决方案2】:

无论如何我都意识到我在下面的代码中犯了错误,给出的结果符合预期。 for(i=1;i

如果 (i ==4 && $4 >= 40)

{

printf "%s", $i

}

其他

{

printf "%s", $i

}

打印“”

}

结束{

打印“”

}

' results1 > file1.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多