A solução usa xmstarlet ferramenta:
xmlstarlet sel -t -v "/p/text()[2]" -n file | sed 's/.*"\(.*\)"//'
A saída:
Massive demographic change has political consequences.
sel
option
sel (or select) - Select data or query XML document(s) (XPATH, etc)
-t
--template opções
-v
option
-v or --value-of - print value of XPATH expression
/p/text()[2]
- Expressão XPath, seleciona o segundo nó de texto do parágrafo (o primeiro nó de texto é .
)
sed 's/.*"\(.*\)"//'
- para extrair a mensagem entre aspas duplas