【发布时间】:2022-11-28 19:12:20
【问题描述】:
我有一个看起来像这样的 xml 文件:
<xml>
<trkseg>
<note>
<to>A</to>
<from>B</from>
<body>
keep this
</body>
</trkseg>
<trkseg>
</note>
...
</trkseg>
</xml>
我想删除所有以下代码。这种标签组合可以在文件中多次出现:
</trkseg>
<trkseg>
有关如何解决此问题的任何提示?
我的预期是这样的:
<xml>
<trkseg>
<note>
<to>A</to>
<from>B</from>
<body>
keep this
</body>
</note>
...
</trkseg>
</xml>
我尝试使用这个 sed 命令,但没有按我想要的方式工作:
sed -i '' -e '/<\/trkseg>/,/<trkseg>/d' my-file.xml
我得到这个结果:
<xml>
<trkseg>
<note>
<to>A</to>
<from>B</from>
<body>
keep this
</body>
</note>
...
【问题讨论】:
-
您显示的文件不是 XML,因为
note和trkseg元素重叠。这就是使用非 XML 工具(例如 sed)创建或操作 XML 的问题,很容易导致无法处理的格式错误的 XML。 -
我的错。我做了一个测试文件。我想用上面的命令更改的文件是一个 gpx 文件。我将在下面发布。