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を解析する方が良いです。
答え2
sed
範囲を選択して削除できます。
sed '/<script/,/<\/script>/d' inputfile