Estoy intentando filtrar los enlaces relacionados con el src
atributo del html de una página web.
Solía curl
obtener el html y el siguiente sed
comando 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 src
y terminan con .jpg
extensió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.