Как отфильтровать ссылки из html с помощью grep или sed?

Как отфильтровать ссылки из html с помощью grep или sed?

Я пытаюсь отфильтровать ссылки, связанные с srcатрибутом, из HTML-кода веб-страницы.

Раньше я использовал команду curlhtml и ниже 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.

Связанный контент