【问题标题】:Shell bash how to delete text between pattern not inclusive?Shell bash如何删除不包含模式之间的文本?
【发布时间】:2021-09-16 16:03:47
【问题描述】:

我正在尝试使用以下方法删除 <pre><\pre> html 标记之间的文本:

sed -i '/<pre>/,/<\/pre>/d' file.html

但这也会删除&lt;pre&gt;&lt;/pre&gt; 标签。文件中只有一对前置标签。 如何避免删除 de pre 标签? 谢谢。

【问题讨论】:

标签: html bash shell sed


【解决方案1】:

这可能对你有用(GNU sed):

sed -n '/<pre>/{p;:a;n;/<\/pre>/!ba};p' file

使用-n 选项关闭隐式打印。

如果一行包含&lt;pre&gt;,则打印它并获取下一行。

如果该行不包含&lt;/pre&gt;,则循环返回并重复。

否则打印所有其他行。

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 2012-06-05
    • 2020-06-12
    • 2018-02-13
    • 2021-10-15
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多