¿Cómo filtrar enlaces de html usando grep o sed?

¿Cómo filtrar enlaces de html usando grep o sed?

Estoy intentando filtrar los enlaces relacionados con el srcatributo del html de una página web.

Solía curl​​​​obtener el html y el siguiente sedcomando para filtrar los enlaces URL.

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

Mi idea era filtrar las líneas que comienzan srcy terminan con .jpgextensión. Pero no funcionó e imprime el html completo. ¿Cómo puedo hacer esto?

Respuesta1

Pruebe el siguiente comando:

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

Explicación:

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)

La búsqueda hacia atrás (?<=src=)afirma que en la posición actual de la cadena, lo que precede son los caracteres src=. Luego buscamos todo excepto "lo que termina en jpg o png.

información relacionada