Em geral, deve-se usar uma ferramenta que entenda html. Para fins limitados, porém, um comando simples pode ser suficiente. Nesse caso, sed
é suficiente para fazer o que você pergunta e funciona bem em bash
scripts. Se você capturou o html de origem em index.html
, então:
$ sed -n 's/.*<p><p tabindex="0">\([^<]*\).*//p' index.html
Clementine is a multiplatform music player focusing on a fast and easy-to-use interface for searching and playing your music.
Ou para capturar o HTML e processar tudo em uma etapa:
$ wget -q https://apps.ubuntu.com/cat/applications/clementine/ -O - | sed -n 's/.*<p><p tabindex="0">\([^<]*\).*//p'
Clementine is a multiplatform music player focusing on a fast and easy-to-use interface for searching and playing your music.
Para capturar essa saída para uma variável bash
:
output="$(wget -q https://apps.ubuntu.com/cat/applications/clementine/ -O - | sed -n 's/.*<p><p tabindex="0">\([^<]*\).*//p')"
A opção -n
é usada em sed
. Isso diz para não imprimir a saída, a menos que nós explicitamente perguntemos. sed
passa pela linha de entrada por linha procurando uma linha que corresponda a .*<p><p tabindex="0">\([^<]*\).*
. Todo o texto que segue o <p tabindex="0">
e a próxima tag é capturado na variável 1. Tudo nessa linha é então substituído pelo texto capturado que é então impresso.