2011-12-18 8 views
0

4k + 웹 페이지에서 일부 쓰레기 js 코드를 제거하려고합니다. 웹 페이지에는 페이지에 다른 js도 있으므로 clickIE라는 특정 기능을 가진 JS 만 제거하면됩니다. 펄 정규식 찾기 및 바꾸기

나는 (... http://www.gskinner.com/RegExr/에서 테스트하지만, 명령 행에 실패 할 때

perl -p -i -e 's|<script(.*)>.*clickie.*?<\/script>|<\!--REMOVED-JS-CODE-->|gixsm' ./*.html 

내 정규식가 제대로 작동 ... 내가 정규식을 소개 할 때까지이 하나 라이너가 작동이는 의미 ... 정규식 실패 전혀 일치하지 않음)

+0

왜 게으른 일치 검색 대신 욕심을 느끼고 있습니까? * 구체적으로 * "실패"를 의미합니까? –

+0

@MarkByers 귀하의 제안에 의해 강화되었습니다. 감사. http://www.gskinner.com/RegExr/에서 테스트 할 때 잘 작동합니다. 커맨드 라인에서 실행할 때 대체를하지 않습니다. 'perl -p -i -e 's | . *? clickie. *? <\/script> | <\! - REMOVED-JS-CODE -> | gixsm './*. html' – jriddle

+0

이 메시지는''로 넘어갑니다. 틀림없이, 당신이 찾고있는 소스의 어디에서나 "clickie"를 따옴표로 붙이지는 않을 것 같지만 일반적인 경우에는 그렇지 않을 수도 있습니다. 이 문제를 안전하게 해결하려면 자바 스크립트 파서를 사용하여 대상 문자열을 함수 이름으로 사용하는 경우 만 찾아야합니다. 이는 다소 어려운 문제입니다. –

답변

3

정규 표현식을 사용하려면 전체 파일을 한 번에 빼내야합니다.

$ perl -0777 -pi -e 's/your/regex/gix' ./*.html 
+0

+1 정확한 해결책을 제시하고 나에게 1 분을 다시 말했습니다. 그러나 플래그를 유지해야 할 수도 있습니다. – TLP

+0

해결되었습니다! 감사합니다 – jriddle

+0

@TLP : 항상 할 수있는 방법이 하나 더 있습니다.) – Zaid

0

@Mark에서 언급했듯이 성냥은 욕심이 없어야합니다. 이것은 작동하는 것 같습니다 ...

perl -i -p -e 's|<script.*?>.*?clickie.*?</script>|<!-- removed -->|gism'