Como filtrar links do html usando grep ou sed?

1

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

Eu usei curl para obter o comando html e abaixo de sed 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 com src e terminam com .jpg extension. Mas não funcionou e imprime todo o html. Como posso fazer isso?

    
por Anonymous Platypus 01.04.2015 / 11:22

1 resposta

1

Tente 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 na string, o que precede são os caracteres src= . Então, procuramos tudo, exceto " , que termina com jpg ou png.

    
por Sylvain Pineau 01.04.2015 / 12:29