html 파일에서 모든 스크립트 블록을 제거하는 방법은 무엇입니까? [복사]

html 파일에서 모든 스크립트 블록을 제거하는 방법은 무엇입니까? [복사]

HTML 파일에서 모든 스크립트 블록(여러 줄 스크립트 블록 포함)을 제거하는 방법은 다음과 같습니다. 예:

<script type="text/javascript">
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
(function() {
var gads = document.createElement('script');
gads.async = true;
gads.type = 'text/javascript';
var useSSL = 'https:' == document.location.protocol;
gads.src = (useSSL ? 'https:' : 'http:') +
'//www.googletagservices.com/tag/js/gpt.js';
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gads, node);
})();
</script>

나는 성공하지 못한 채 다음과 같은 것을 시도했습니다.

sed -i -e 's/<script.*\n.*<\/script>//g' 'path/to/file.html'

답변1

sed는 입력을 한 줄씩 처리합니다. Perl에서는 전체 파일을 한 번에 처리하는 것이 더 쉽습니다.

perl -0777 -pe 's=<script>.*?\n.*?</script>==sg'
  • -0777전체 파일 읽기
  • ?after는 *"알뜰하게" 만듭니다. 즉, 가능한 가장 짧은 문자열과 일치합니다.
  • /s.일반적으로 일치하지 않는 개행 문자와 일치합니다 .

스크립트에 </script>주석이나 따옴표가 포함되어 있으면 깨질 수 있습니다. HTML을 구문 분석하는 것이 더 좋습니다.

답변2

sed범위를 선택하고 삭제할 수 있습니다 .

sed '/<script/,/<\/script>/d' inputfile

관련 정보