您在这里需要的不是 awk,而是专门为此类任务创建的 XSLT。它使您可以将 xml 文档转换为不同的 xml。
对于像您这样的输入:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="example.xsl"?>
<outer_tag>
<top_tag>
<tag>value_1</tag>
<other_tags></other_tags>
</top_tag>
<top_tag>
<tag>value_2</tag>
<other_tags></other_tags>
</top_tag>
<top_tag>
<tag>value_3</tag>
<other_tags></other_tags>
</top_tag>
<top_tag>
<tag>value_n</tag>
<other_tags></other_tags>
</top_tag>
</outer_tag>
下面的 XSLT通过简单地不复制它们并忽略它们的内容来删除所有top_tag
元素。value_3
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="child::node()"></xsl:apply-templates>
</xsl:element>
</xsl:template>
<xsl:template match="top_tag[tag = 'value_3']">
</xsl:template>
</xsl:stylesheet
每种主要的编程语言都至少有几个库可以根据 XSLT 处理 XML 输入。命令行工具和基于 UI 的应用程序(IDE,但不仅限于这些)也可以做到这一点。最后,如果您在 xsl 文件中包含如下处理指令,则 Web 浏览器可以使用 XSLT 转换文件:
<?xml-stylesheet type="text/xsl" href="example.xsl"?>