Ich versuche, [[****]] Platzhalter in einer HTML-Datei mit Werten aus der Eigenschaftendatei zu ersetzen.Ersetzen von Platzhaltern mit SED
Beispielinhalt in der Eingabedatei:
<html>
<host>[[my_host]]</host>
<port>[[my_port]]</port>
</html>
Beispielinhalt in Eigenschaftendatei:
my_host=linkcmb.com
my_port=8080
Meine aktuelle Skript:
#/bin/sh
property_file=$1
input_html=$2
output_html=$3
IFS="="
while read k v || [[ -n "$k" ]]; do
test -z "$k" && continue
declare $k=$v
done <"$property_file"
eval "$(sed 's/\[\[\([^]]\+\)\]\]/${\1}/g' $input_html) >$output_html";
Fehler: HTML-Tags sind auch immer bewertet Fehler verursachen.
./some.sh: line 32: html: No such file or directory
./some.sh: line 33: host: No such file or directory
./some.sh: line 35: /host: No such file or directory
....
....
Alle Hinweise werden sehr geschätzt. Vielen Dank.
add Probeneingangsleitungen und erwartete Ausgabe für Klarheit ... und sed nicht geeignetes Instrument ist, verwenden, um auf HTML-Dateien ... – Sundeep
@Sundeep die Frage aktualisiert Bitte überprüfen Sie – popcoder
IMO, das ist nicht geeignet für bash Scripting und Sed ... Ich habe keine Erfahrung mit der Verwendung von richtigen HTML-Parsern ... für gegebene Probe, 'Sed-F <(Sed 's/^ \ ([^ =] * \) = \ (. * \)/s | \\ [\\ [\ 1 \\] \\] | \ 2 |/'property.txt) ip.html' könnte funktionieren, aber es wird leicht Pause für echte Anwendungsfälle – Sundeep