Лучший способ вставки блоков HTML в bash

Лучший способ вставки блоков HTML в bash

Я работаю над скриптом, который собирает данные о серверах и форматирует их в красивый отчет по электронной почте в формате 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, чтобы редактировать заполнители.

Связанный контент