No estoy muy familiarizado con regex, sed, etc. y me da un poco de flojera descifrarlo en este momento, entonces, ¿cómo extraigo esta línea?:
<yweather:astronomy sunrise="6:50 am" sunset="7:06 pm"/>
Avíseme si se necesita más de la estructura xml.
Respuesta aceptada:
Dado que los datos de entrada (su archivo XML) están estructurados, es mejor que utilice una consulta sobre esos datos estructurados, en lugar de tratarlos como texto sin formato y jugar con expresiones regulares.
Podemos usar xmllint --xpath
para evaluar una expresión XPath en su entrada xml:
$ xmllint --xpath 'string(rss/channel/*[local-name()="astronomy"]/@sunrise)' weather.xml
6:48 am
– esto es un poco complicado, ya que tenemos que lidiar con los diferentes espacios de nombres en ese archivo, pero funciona de todos modos.
Para obtener más información sobre XPath, la especificación se encuentra en http://www.w3.org/TR/xpath/