sed を使用した文字列間のテキストの削除

sed を使用した文字列間のテキストの削除

だから私はいくつかの同様の問題を解決しましたが、それらのどれも解決することはできません。

現在これを使用しようとしています:

sed -i '/^<script/,/script>/{/^<script/!{/script>/!d}}' file.txt

私はこうすればとの間<scriptのすべての内容が削除されると思ったが、script>推測されたのですがそうではありません。

txtファイルのコードは次のとおりです。

<script type="text/javascript">
 bla bla some script bla bla
</script>

複数の場所に複数のスクリプトがあります。。 txtそれらをすべて削除する必要があります。

ベストアンサー1

開いたタグと閉じるタグ(開いたタグは常に行の先頭にあります)の間のscriptテキストを削除するには、次のようにします。

sed -i '/^<script/,/<\/script>/d' file

もちろん、sedこのようなことのために悪い考えだ適切なパーサーを使用する必要があります。たとえば、入力ファイルに入れ子になったブロックが含まれている場合はどうなりますか?

<script type="text/javascript">
 bla bla some script bla bla
<script>
    foo
</script>
</script>

ただし、これが問題かどうかは、入力データによって異なります。

おすすめ記事