如何删除 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

相关内容