Ich bin neu zu Sed und Probleme beim Suchen und Ersetzen mehrzeiligen XML-Code zwischen den XML-Tags durch einige XML-Code. Hier ist die Probe für XML-CodeErsetzen Sie Text in XML-Multi-Line-Tags mit sed
<List>
<User>
<Id>1234</Id>
<Info>
<Id>11</Id>
</Info>
</User>
</List>
Ich mag den XML-Code zwischen Liste Tags ersetzen zu werden ..
<List>
<Replace>
<Id> 223 <Id>
</Replace>
</List>
I verwendet sed "s/\(<Id>\).*\(<\/Id\)/\19999\2/" input.xml > output.xml
aber seine Arbeit für einzelne Linie, aber nicht für Multi-Line . Der Inhalt zwischen den List-Tags kann sich ändern und auch inline sein. Sie können also nicht auf bestimmte Muster antworten, sondern müssen sich nur auf Tags verlassen. Jede Hilfe oder Hinweise würden geschätzt werden?
Verwenden Sie Regex nicht, um XML zu analysieren. Siehe diesen Beitrag http://stackoverflow.com/questions/9200462/simplet-way-to-do-basic-xml-parsing-from-unix-command-line – Lynch
Verarbeitung von XML in Bash/Awk ist nicht die beste (dh die meisten robuster/sicherster Weg), kann jedoch schnelle und schmutzige Lösungen für persönliche/Debugging-Zwecke bieten. So könnten Sie diese Q/As betrachten: [SO: Erhalte einen Block aus einer XML-Datei mit Daten aus einer Quelldatei] (http://stackoverflow.com/questions/43642559/get-a-block-from-an- xml-Datei-using-data-from-a-source-Datei/43704602? s = 1 | 0.0000 # 43704602), [SO: Shell Scripting - Teilen von XML in mehrere Dateien] (http://StackOverflow.com/questions/ 42625786/shell-scripting-split-xml-in-multiple-files/42626222? S = 6 | 0.0000 # 42626222). – Scheff