Como filtrar links de HTML usando grep ou sed?

Como filtrar links de HTML usando grep ou sed?

Estou tentando filtrar os links relacionados ao srcatributo do html de uma página web.

Eu costumava curlobter o sedcomando html e abaixo para filtrar os links de URL.

curl -s http://www.example.com/ | sed -n '/src/,/jpg/p'

Minha ideia era filtrar as linhas que começam srce terminam com .jpgextensão. Mas não funcionou e imprime todo o html. Como posso fazer isso?

Responder1

Experimente o seguinte comando:

curl -s http://www.example.com | grep -Po '(?<=src=")[^"]*(jpg|png)'

Explicação:

De man grep:

   -o, --only-matching
          Print only the matched (non-empty) parts of a matching line,
          with each such part on a separate output line.
   -P, --perl-regexp
          Interpret PATTERN as a Perl compatible regular expression (PCRE)

O lookbehind (?<=src=)afirma que na posição atual da string, o que precede são os caracteres src=. Então procuramos tudo, exceto "o que termina com jpg ou png.

informação relacionada