具有顺序输出的unix shell脚本中的HTML

我有一个名为“main.ksh”的脚本,它返回“output.txt”文件,我通过邮件发送这个文件(列表包含50多条logging,我只给了4条logging)

邮件输出我得到的是:

DATE | FEED NAMEs | 文件名称| 工作职位名称| SCHEDULED_TIME | TIMESTAMP | 大小(MB)| COUNT | STATUS |

Dec 17 INVEST_AI_FUNDS_FEED amlfunds_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai TUE-SAT 02:03 0.4248 4031 On_Time

Dec 17 INVEST_AI_SECURITIES_FEED amltxn_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai TUE-SAT 02:03 0.0015 9 On_Time

Dec 17 INVEST_AI_CONNECTED_PARTIES_FEED amlbene_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai TUE-SAT 02:03 0.0001 1 No_Records

我正在为Delayed,On_Time和No_Records字段实现着色,并且我在下面的脚本中给出了底部输出(输出是正确的,但没有空格分隔)。

awk 'BEGIN { print "<html>" \ "<body bgcolor=\"#333\" text=\"#f3f3f3\">" \ "<pre>" } NR == 1 { print $0 } NR > 1 { if ($NF == "Delayed") color="red" else if ($NF == "On_time") color="green" else if ($NF == "No_records") color="yellow" else color="#003abc" $NF="<span style=\"color:" color "\">" $NF "</span>" print $0 } END { print "</pre>" \ "</body>" \ "</html>" } ' output.txt > output.html 

输出完美的色彩:

| DATE | FEED NAMEs | 文件名称| 工作职位名称| SCHEDULED_TIME | TIMESTAMP | 大小(MB)| COUNT | STATUS |

12月17日INVEST_AI_FUNDS_FEED amlfunds_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai On_Time

Dec 17 INVEST_AI_SECURITIES_FEED amltxn_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai On_Time

12月17日INVEST_AI_CONNECTED_PARTIES_FEED amlbene_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai No_Records

有4列自动跳过。 你可以帮我吗? 非常感谢 !

当你的代码执行这个

 $NF="<span style=\"color:" color "\">" $NF "</span>" print $0 

输入行被重建,因此两个连续字段之间的多个空白仅被一个空白空间所替代

我的解决方案将输入行复制到一个变量中,删除最后一个字段(更改变量的值,而不是输入行),添加修改的最后一个字段并打印:

 Dummy=$0 sub("[^ ]+$","",Dummy) # removes last field Dummy=Dummy "<span style=\"color:" color "\">" $NF "</span>" print Dummy 

最好的祝福

更新 :最后两个代码行可以这样减少:

 print Dummy "<span style=\"color:" color "\">" $NF "</span>"