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