gewusst wie: Lesen von xml-Datei in linux
Ich habe eine xml-Datei, wie unten, muss ich "de" mit einigen unix-Befehl.
<void method="put">
<string>LANGUAGE</string>
<string>en</string>
</void>
mit nachstehenden Befehl (habe von einigen link in google),
sed -n '/string/{s/.*<string>//;s/<\/string.*//;p;}' Locale.xml
Erhalte ich die Ausgabe als
LANGUAGE
en
so habe ich
sed -n '/string/{s/.*<string>//;s/<\/string.*//;p;}' Locale.xml | tail -1
Aber es ist eine option in der sed, durch die ich bekommen kann zweiten Wert nur???
- Mit einem XML-parser eine bessere option sein könnte.
- genau der Anwendungsfall für xpath. wenn Sie brauchen, um wickeln Sie es mit einem shell-Skript, können Sie das tool
xmllint
mit--xpath
. Kann ich nicht weiter empfehlen, bevor man Ihre Dokument-Struktur. Versuchen Sie nicht, zu verwenden, awk/sed/grep auf ein xml, wenn Sie wollen, dass Ihr script stabil zu sein. auch Sie verwenden konnte, diese aber für eine quick-and-dirty-shot/test. - XML ist keine reguläre Sprache, was bedeutet, dass Sie nicht passen Ihre Strukturen mit regulären Ausdrücken effektiv.
- Siehe Grep und Sed Äquivalent für XML-Verarbeitung über die Befehlszeile
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie diese
sed
,Verwenden
xmlstarlet
.Oder verwenden Sie
xmllint
.Mehr über XPath.
Können Sie die Suche für
LANGUAGE
und dem drucken der nächsten Zeile:Oder suchen Sie
string
und drucken die Letzte:Mit xsh: