Ich bin mit Regex, Sed usw. nicht wirklich vertraut und ein bisschen faul, es jetzt herauszufinden, also wie extrahiere ich diese Zeile:
<yweather:astronomy sunrise="6:50 am" sunset="7:06 pm"/>
Lassen Sie mich wissen, wenn mehr von der XML-Struktur benötigt wird.
Akzeptierte Antwort:
Da die Eingabedaten (Ihre XML-Datei) strukturiert sind, sollten Sie besser eine Abfrage für diese strukturierten Daten verwenden, anstatt sie als einfachen Text zu behandeln und mit regulären Ausdrücken herumzuspielen.
Wir können xmllint --xpath
verwenden So werten Sie einen XPath-Ausdruck für Ihre XML-Eingabe aus:
$ xmllint --xpath 'string(rss/channel/*[local-name()="astronomy"]/@sunrise)' weather.xml
6:48 am
– das ist ein wenig kompliziert, da wir uns mit den verschiedenen Namespaces in dieser Datei befassen müssen, aber es funktioniert trotzdem.
Weitere Informationen zu XPath finden Sie in der Spezifikation unter http://www.w3.org/TR/xpath/