regex - 如何使用 sed(或类似工具)删除两个 html 标签之间的所有行?

标签 regex bash sed

我有一个看起来像这样的文件:

<HTML>
<HEAD>
< ... stuff ... ></HEAD>
< ... stuff ... >
</HTML>

我正在尝试删除 HEAD 标签之间(包括 HEAD 标签)的所有内容,但似乎无法正常工作。

我以为

sed -i -e 's/<HEAD>.*<\/HEAD>//g' file.HTML

应该可以,但它不会删除任何内容。

sed -i -e '/<HEAD>/,/<\/HEAD>/d' file.HTML

也不做任何事情。没有错误,什么都没有。

是我的输入文件有问题,还是有其他解决方法?

最佳答案

删除标签之间的所有行离开标签:

sed '/<tag>/,/<\/tag>/{//!d}' input.txt

删除标签之间的所有行,包括标签:

sed '/<tag>/,/<\/tag>/d' input.txt

要原地更改,请使用 sed -i ...。在备份原始 sed -i.bak ... 时更改位置,这会将原始文件另存为 input.txt.bak

关于regex - 如何使用 sed(或类似工具)删除两个 html 标签之间的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29530441/

相关文章:

Mysql 替换正则表达式

javascript - 如何在javascript正则表达式中第一次转义第二个捕获组

linux - 转换后将文件移动到其原始位置

bash - 使用 sed 将字符串替换为变量的内容,即使它是转义字符

带有单行标志的正则表达式命令行

java - 如何在前面没有反斜杠的情况下替换所有双引号

java - 如果第一个匹配,如何匹配两个连续的单词

regex - 如何使用 awk 重复一行?

linux - 使用 netpipes/netcat 绑定(bind)端口

bash - 用sed修改key ="Value"配置