Я пытаюсь отфильтровать ссылки, связанные с src
атрибутом, из HTML-кода веб-страницы.
Раньше я использовал команду curl
html и ниже sed
для фильтрации URL-ссылок.
curl -s http://www.example.com/ | sed -n '/src/,/jpg/p'
Моя идея была отфильтровать строки, которые начинаются с src
и заканчиваются .jpg
расширением. Но это не сработало, и выводится весь html. Как это сделать?
решение1
Попробуйте следующую команду:
curl -s http://www.example.com | grep -Po '(?<=src=")[^"]*(jpg|png)'
Объяснение:
От 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)
Ретроспективный просмотр (?<=src=)
утверждает, что в текущей позиции в строке предшествуют символы src=
. Затем мы ищем все, кроме того "
, что заканчивается на jpg или png.