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

标签 html linux shell unix awk

我有一个名为“main.ksh”的脚本,它返回“output.txt”文件,我正在通过邮件发送该文件。(列表包含 50 多条记录,例如我只给出 4 条记录)

我得到的邮件输出是:

日期 |饲料名称 |文件名 |职位名称 |预定_TIME|时间戳|大小(MB)|计数|状态 |

12 月 17 日 INVEST_AI_FUNDS_FEED amlfunds_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai TUE-SAT 02:03 0.4248 4031 On_Time

12 月 17 日 INVEST_AI_SECURITIES_FEED amltxn_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai TUE-SAT 02:03 0.0015 9 On_Time

12 月 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

完美着色的输出:

|日期 |饲料名称 |文件名 |职位名称 |预定_TIME|时间戳|大小(MB)|计数|状态 |

12 月 17 日 INVEST_AI_FUNDS_FEED amlfunds_iai_20161217.txt gdcpl3392_uxmow080_ori_inv_ai On_Time

12 月 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>"

关于具有顺序输出的 unix shell 脚本中的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40738933/

相关文章:

linux - 有没有办法在 CentOS 中计算每秒文件中添加的行数?

linux - 如何从shell脚本中的另一个目录获取文件的完整路径?

javascript - jquery 未捕获 TypeError 无法读取第一页上未定义的属性 'left'

html - 我将如何用多种颜色划分我的背景?

javascript - 将java脚本数组元素作为输入字段值放入html表单中?

linux - 如何在 unix 中的 find 命令的搜索路径中排除给定目录的所有子目录

c++ - Tizen Construct() Button 方法失败

JavaScript/jQuery 多级 Accordion 不会关闭复选框

ruby - rvm 不是函数,因为 gnome 终端将 bash 作为非登录 shell 运行?

shell - 在shell脚本中使用sed的双倍行距文件