Как отфильтровать ссылки из HTML, используя grep или sed?

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

Я использовал curl, чтобы получить html и ниже sed, чтобы отфильтровать URL-ссылки.

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

Моя идея состояла в том, чтобы отфильтровать строки, которые начинаются с src и заканчиваются расширением .jpg. Но это не сработало и распечатывает весь HTML. Как я могу это сделать?

1
задан 1 April 2015 в 12:36

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)

lookbehind (?<=src=) утверждает, что в текущей позиции в строке, что предшествует, символы src=. Тогда мы ищем все кроме ", который заканчивается jpg или png.

1
ответ дан 1 April 2015 в 12:36

Другие вопросы по тегам:

Похожие вопросы: