2016-12-08 2 views
0

Ich versuche, eine XML-Datei mit einem Shell-Skript zu bearbeiten. Ich habe Hilfe gefunden wie this. Aber die Struktur meiner XML-Datei unterscheidet sich kaum. Dies ist ein Beispiel für meine XML-Datei:XML-Dateistruktur beim Bearbeiten der XML-Datei mit Shell-Skript

<Code> 
    <Type name="abc">this is ABC</Type> 
    <Type name="xyz">this is XYZ</Type> 
</Code> 

Hier möchte ich die this is ABC und this is XYZ Text bekommen und dann einen String mit ihnen wie folgt anhängen:

<Code> 
    <Type name="abc">this is ABC EDITED</Type> 
    <Type name="xyz">this is XYZ EDITED</Type> 
</Code> 

ich die 'abc' wie diese bearbeiten können :

xmlstarlet ed --inplace -u "/Code/Type[@name='abc']/@name" -v abc_edited ./abc.xml 

Aber Wie kann ich die 'this is ABC' String bearbeiten wo 'this is ABC' etwas unbekannt sein kann?

+0

Wenn Sie mit 'sed' einverstanden sind:' sed -e' s/das ist ABC/& EDITED/'-e's/das ist XYZ/& EDITED/'input.xml'. Besser, dies nicht zu implementieren, gehen Sie mit 'xmlstarlet'. –

+0

Die Zeichenfolge 'das ist ABC' kann alles sein. Ich kenne nur den 'name =" abc "'. Kannst du mir bitte sagen, wie ich das mit xmlstarlet machen soll? –

+0

Ich würde, wenn ich könnte. Jemand anderes würde tun. –

Antwort

0

dies geschehen könnte awk mit

Inhalt = (cat abc.xml | awk -f '[{}]' '/ Typ name = "abc" /' {print $ 3} | sed ‚s/Dies ist ABC/das ist ABC EDITED/i ')

+0

Der String 'das ist ABC' kann alles sein. Ich kenne nur den 'name =" abc "'. Also, das ist nicht möglich –

Verwandte Themen