2013-05-25 2 views
3

웹 사이트의 변경 내용을 추적하고 변경 내용을 이메일로 보내주는 셸 스크립트를 작성하고 있습니다. 아이디어는 wget을 사용하여 html 복사본을 가져 와서 스크립트가 마지막으로 실행 한 버전과 비교하는 것입니다. Wget은 html 파일을 저장하는데 문제가 없지만 파일을 비교하는 데 문제가 있습니다. 문제는 코드, 링크 등이 아닌 html 파일의 일반 텍스트의 변경에만 관심이 있다는 것입니다.html 파일의 Bash diff 본문 텍스트 만

차이점은 두 파일의 모든 변경 사항을 찾기 위해 작동하지만 평이 텍스트가 동일합니다. 이는 사이트의 각 링크가 해당 페이지에 액세스 할 때마다 다른 해당 인증 토큰을 가지기 때문입니다. 일반 텍스트를 포함하는 줄만 비교하기 위해 "<"또는 "(any_amount_of_spaces) <"으로 시작하는 줄을 제외하도록 필터링하려고합니다. diff 매뉴얼 페이지를 살펴 봤지만 필요한 작업을 수행 할 연산자를 찾지 못하는 것 같습니다. 나는 REGEX에 대해 많이 알지 못하지만 diff -I와 함께이 작업을 할 수 있을까?

감사합니다.

+0

예를 확인할 수 있습니다. http://stackoverflow.com/q/2747091/1983854 – fedorqui

답변

3

당신은 페이지를 렌더링 diff에 그 먹이를 lynx -dump를 사용할 수 있지만, 링크에 관심이없는 때문에 당신이 (예를 들어 awk 포함)이 수익률은 이것을 그리 렌더링하는 References 섹션을 제거해야합니다 -robust solution (하지만 유스 케이스에는 충분할 것이다).

diff <(html2text before.html) <(html2text after.html) 

PS : 당신이 제 3 자가 html2text 갈 것을 사용 괜찮다면

html2text라는 두 개의 서로 다른 프로그램이 있습니다.

+0

감사합니다. html2text는 완벽 해 보이지만 os x에서는 컴파일되지 않습니다. 내일 내 Raspi를 시도하고 다시보고 할 것입니다. –

+1

[homebrew] 공식 (https://github.com/mxcl/homebrew/blob/master/Library/Formula/html2text.rb)이 있으므로 [homebrew] (http : //mxcl.github.io/homebrew/) 또는 직접 수식에 언급 된 패치를 적용하고 다시 컴파일 해보십시오. 그것이 작동 해야하는 것 같습니다! –

+1

완벽하게 작동합니다! 감사! –

관련 문제