Como os dados de entrada (seu arquivo XML) estão estruturados, é melhor usar uma consulta nesses dados estruturados, em vez de tratá-los como texto sem formatação e mexer com expressões regulares.
Podemos usar xmllint --xpath
para avaliar uma expressão XPath em sua entrada xml:
$ xmllint --xpath 'string(rss/channel/*[local-name()="astronomy"]/@sunrise)' weather.xml
6:48 am
- isso é um pouco confuso, já que temos que lidar com os diferentes namespaces nesse arquivo, mas funciona mesmo assim.
Para mais informações sobre o XPath, a especificação está no link