나는 체인에 갈 것이지만 약간 다릅니다. strings.txt라는 텍스트 파일에 텍스트 스 니펫이있는 경우 다음과 같이 할 수 있습니다.
grep http ./strings.txt | sed 's/http/\nhttp/g' | grep ^http | sed 's/\(^http[^ <]*\)\(.*\)/\1/g' | grep IWANTthis | sort -u
설명:
grep http ./st3.txt => will catch lines with http from text file
sed 's/http/\nhttp/g' => will insert newline before each http
grep ^http => will take only lines starting with http
sed 's/\(^http[^ <]*\)\(.*\)/\1/g'
=> will preserve string from ^http until first space or < (the latter in hope if
grep IWANTthis => will take only urls containing your text of your interest; you can omit this.
sort -u => will sort the list and remove duplicates from it
URL이 작동하지 않을 수 있으므로 관심있는 URL로 추가 오류 검사를 수행 할 수 있습니다. 예를 들어 wget -p URL -O /dev/null
-URL을 사용할 수없는 경우 매우 다른 오류 코드를 인쇄하므로 링크 목록을 처리하고 유효성 상태를 출력하도록 루프를 설정할 수 있습니다.
궁극적으로 html 파일에서 링크를 추출하는 sed
경우 특별한 경우에 문제가 발생할 수 있습니다 . 아마도 이미 본 것처럼 웃긴 (포스트) 에서 제안했듯이 정규 표현식을 사용하지 않고 html 파서 엔진을 사용하는 것이 가장 좋습니다. 쉽게 구할 수있는 파서 중 하나는 텍스트 전용 브라우저 lynx
(Linux에서 사용 가능)입니다. 이를 통해 파일의 모든 링크 목록을 즉시 덤프 한 다음 grep으로 원하는 URL을 추출 할 수 있습니다.
lynx -dump -listonly myhtmlfile.html | grep IWANTthisString | sort -u
그러나 이것은 대부분의 엉망이 된 html 파일 또는 링크가있는 텍스트 스 니펫에서는 작동하지 않습니다.