我一直在编写一个脚本,该脚本收集有关服务器的数据并将其格式化为漂亮的 html 电子邮件报告。到目前为止,我一直在使用 sed 来替换 html 模板中的值,这基本上没问题,但我遇到过一种情况,我需要根据变量插入任意次数的多行 html 块。我不太确定如何做到这一点,因为 sed 似乎对多行的处理不太好?也许有一种我没有考虑过的 perl 或 awk 方法。
这是一个示例,我需要根据现有模板中的文件数量将 0-n 个表块插入到现有模板中
对于 $files 中的 f
<tr class="details">
<td> f.$DATE </td>
<td> f.$APPLIANCE </td>
<td> f.$HOST </td>
<td> f.$MDL </td>
</tr>
ETC。
谢谢!
答案1
使用此处文档:
for f in $files; do
cat <<END_HTML
<tr class="details">
<td> f.$DATE </td>
<td> f.$APPLIANCE </td>
<td> f.$HOST </td>
<td> f.$MDL </td>
</tr>
END_HTML
done
这将输出与 中的单词一样多的块$files
,并将命名变量扩展为其各自的值。
答案2
你可以尝试一下“snippets”,很多文本编辑器或者IDE都支持这个功能。您可以为编码块自定义一些模板并为其命名,然后您可以键入名称和选项卡将其扩展到编码块。此外,您可以使用 Tab 键编辑占位符。