使用 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>

但这是否是一个问题将取决于您的输入数据。

相关内容