grep 또는 sed를 사용하여 html에서 링크를 필터링하는 방법은 무엇입니까?

grep 또는 sed를 사용하여 html에서 링크를 필터링하는 방법은 무엇입니까?

src웹페이지의 HTML에서 속성 과 관련된 링크를 필터링하려고 합니다 .

나는 URL 링크를 필터링하기 위해 curlhtml과 아래 명령을 사용했습니다.sed

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)

Lookbehind는 (?<=src=)문자열의 현재 위치에서 앞에 문자가 있다는 것을 주장합니다 src=. 그런 다음 "jpg 또는 png로 끝나는 것을 제외한 모든 것을 찾습니다 .

관련 정보