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 は入力を 1 行ずつ処理します。 Perlでは、ファイル全体を一度に処理する方が簡単です。

perl -0777 -pe 's=<script>.*?\n.*?</script>==sg'
  • -0777完全なファイルを読む
  • ?after は*「丁寧に」作ります。つまり、できるだけ短い文字列と一致します。
  • /s.通常、一致しない改行文字と一致します。

スクリプトに</script>コメントや引用符が含まれていると壊れることがあります。 HTMLを解析する方が良いです。

おすすめ記事