
Estou tentando filtrar os links relacionados ao src
atributo do html de uma página web.
Eu costumava curl
obter o sed
comando 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 src
e terminam com .jpg
extensã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.