【问题标题】:BASH - How to replace only one tag in an XML, when duplicates appear?BASH - 当出现重复时,如何仅替换 XML 中的一个标签?
【发布时间】:2011-09-20 08:30:51
【问题描述】:

这是我的 xml 文件的样子:

    <modelVersion>4.0.0</modelVersion>
    <version>5.1.3-SNAPSHOT</version>

<parent>
    <artifactId>xxx</artifactId>
    <groupId>group</groupId>
    <version>5.1.3-SNAPSHOT</version>
</parent>

<artifactId>yyy</artifactId>
<packaging>pom</packaging>
<name>artifact name</name>

<modules>           
    <module>m1</module>
    <module>m2</module>
    <module>m3</module>
</modules>

我只想从 中的标签中删除“-SNAPSHOT”字符串。

我该怎么做?

【问题讨论】:

    标签: xml bash tags replace duplicates


    【解决方案1】:

    这已经超出了简单的基于行的方法的能力。您可以将 sed 魔法与行选择运算符一起使用,或者使用 perl。

    sed 中的一个示例是(但仅用于教育目的!不要在家里尝试这个!这个脚本对于 XML 的更改非常不稳定):

    /<parent>/,/<.parent>/s/-SNAPSHOT//
    

    然而,XSLT 和xsltproc 绝对是处理如此繁重的 XML 处理任务的首选解决方案。

    【讨论】:

    • 我尝试使用 sed,但没有找到一种方法来做到这一点。你能指出一些有用的例子吗?
    • 抱歉,不能这样做,因为人们试图避免这种巫术,如果他们这样做了就不要发布它:-)。用一个例子编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2015-12-22
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 2016-04-19
    相关资源
    最近更新 更多