【发布时间】:2022-01-14 02:56:05
【问题描述】:
假设我们有一个包含以下内容的文件:
<tag1>
junk1
junk2
</tag1>
data1
data2
data3
<tag1>junk3</tag1>
data4
data5
所以,我们想删除两个字符串之间的所有数据,这里是 <tag1> 和 </tag1>。我可以使用sed 命令来完成这项工作,例如:
cat input | sed '/<tag1>/,/<\/tag1>/d'
但是有一个问题,该命令无法正常工作,并且从输出中删除了单行tag1 标记之后的数据。上述命令的输出:
data1
data2
data3
所以,主要问题是,我们如何删除两个字符串/标签/模式之间的数据,即使它们是单行或多行数据?
谢谢
【问题讨论】:
-
预期输出是什么?
-
@HatLess data1-5
-
输入的 XML 是真实有效的吗?如果是这样,您应该探索
xpath解决方案 -
很遗憾没有,@Fravadona,该文件由不同的数据类型组成,例如 json、html、xml、js 等。