Я работаю над скриптом, который собирает данные о серверах и форматирует их в красивый отчет по электронной почте в формате HTML. До сих пор я использовал sed для замены значений в шаблоне HTML, и это было в основном нормально, но я столкнулся с ситуацией, когда мне нужно было вставить многострочный блок HTML на основе переменных произвольное количество раз. Я не совсем уверен, как это сделать, так как sed, похоже, не очень хорошо работает с несколькими строками? Может быть, есть способ с Perl или AWK, который я не рассматривал.
Вот пример, в котором мне нужно вставить 0-n блоков таблиц в существующий шаблон в зависимости от количества файлов.
для f в $files
<tr class="details">
<td> f.$DATE </td>
<td> f.$APPLIANCE </td>
<td> f.$HOST </td>
<td> f.$MDL </td>
</tr>
и т. д.
Спасибо!
решение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, чтобы развернуть его до блока кодирования. Кроме того, вы можете Tab, чтобы редактировать заполнители.