Ich habe an einem Skript gearbeitet, das Daten über Server sammelt und sie in einen schönen HTML-E-Mail-Bericht formatiert. Bisher habe ich sed verwendet, um Werte in einer HTML-Vorlage zu ersetzen, und das war größtenteils in Ordnung, aber ich bin auf eine Situation gestoßen, in der ich einen mehrzeiligen HTML-Block basierend auf Variablen beliebig oft einfügen muss. Ich bin mir nicht ganz sicher, wie ich das machen soll, da sed mit mehreren Zeilen nicht so gut zurechtzukommen scheint. Vielleicht gibt es eine Möglichkeit mit Perl oder AWK, an die ich nicht gedacht habe.
Hier ist ein Beispiel, bei dem ich 0-n Tabellenblöcke in eine vorhandene Vorlage einfügen müsste, basierend auf der Anzahl der vorhandenen Dateien
für f in $files
<tr class="details">
<td> f.$DATE </td>
<td> f.$APPLIANCE </td>
<td> f.$HOST </td>
<td> f.$MDL </td>
</tr>
usw.
Danke!
Antwort1
Verwenden Sie ein Here-Dokument:
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
Dadurch wird der Block so oft ausgegeben, wie er Wörter enthält $files
, wobei die benannten Variablen auf ihre jeweiligen Werte erweitert werden.
Antwort2
Sie können die „Snippets“ ausprobieren. Viele Texteditoren oder IDEs unterstützen diese Funktion. Sie können eine Vorlage für einen Codierungsblock anpassen und benennen. Anschließend können Sie den Namen eingeben und mit der Tabulatortaste zum Codierungsblock erweitern. Außerdem können Sie mit der Tabulatortaste die Platzhalter bearbeiten.