Ich habe das folgende Format der Datei:
<common>
fitnes=0
genetic=1
method=0
</common>
<inputs>
foo=bar
bar=foo
</inputs>
<limits>
balance=200.00
</limits>
und ich möchte alles löschen, was zwischen <inputs>
und liegt </inputs>
(ausgenommen Muster selbst) und es durch den Inhalt einer anderen Datei ersetzen (z foo.txt
. B. ). Mit anderen Worten, Zeilen mit foo=bar
und bar=foo
würden durch einen anderen Inhalt ersetzt.
Wahrscheinlich kann es ähnlich sein, wie Sie eine mehrzeilige Übereinstimmung löschen , wie zum Beispiel:
:g/<inputs/,/inputs>/d
Ich bin mir aber nicht sicher, durch was ich das ersetzen soll d
, um den Inhalt einer anderen Datei einzufügen, aber ich möchte das passende Muster beibehalten.
Ein ähnlicher Ansatz wäre, den inneren Inhalt des HTML-Tags zu entfernen , wie z
:/<inputs>/norm vitd
aber dann weiß ich nicht, wie Sie den Inhalt aus der Datei hinzufügen würden.
Im Idealfall versuche ich, einen Liner zu finden, da dieser Teil eines anderen Skripts ist.
Wie kann ich das erreichen?
ex
Skripts suche, in der ich abhängig von den Benutzereingabeargumenten angeben kann, welche Datei eingefügt werden soll.Wenn dies ein weiterer Versuch ist, XML mit Nicht-XML-Tools zu analysieren, tun Sie dies nicht.
Die Lösungen hier sind gültig, aber die Absicht könnte nicht sein. Wenn das XML nicht aus einer gut gezähmten Quelle stammt, erhalten Sie möglicherweise Escape-, CDATA- oder Leerzeichen im Tag!
Xsltproc vom Befehl in vi kann damit umgehen.
quelle
ini
Datei mit diesen 3 XML-ähnlichen Tags.