Je ne suis pas vraiment familier avec regex, sed, etc. et un peu paresseux pour le comprendre en ce moment, alors comment puis-je extraire cette ligne :
<yweather:astronomy sunrise="6:50 am" sunset="7:06 pm"/>
Faites-moi savoir si plus de structure xml est nécessaire.
Réponse acceptée :
Étant donné que les données d'entrée (votre fichier XML) sont structurées, vous feriez mieux d'utiliser une requête sur ces données structurées, plutôt que de les traiter comme du texte brut et de jouer avec des expressions régulières.
Nous pouvons utiliser xmllint --xpath
pour évaluer une expression XPath sur votre entrée xml :
$ xmllint --xpath 'string(rss/channel/*[local-name()="astronomy"]/@sunrise)' weather.xml
6:48 am
- c'est un peu compliqué, car nous devons gérer les différents espaces de noms dans ce fichier, mais ça marche quand même.
Pour plus d'informations sur XPath, la spécification est à http://www.w3.org/TR/xpath/