BASH - Как заменить только один тег в XML, когда появляются дубликаты? - PullRequest
0 голосов
/ 20 сентября 2011

Вот как выглядит мой 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" ТОЛЬКО из тега в .

Как мне это сделатьчто?

1 Ответ

1 голос
/ 20 сентября 2011

Это прошлое возможностей простых линейных подходов.Вы можете использовать sed magic с операторами выбора строки или сделать perl.

Примером sed может быть (но только для образовательных целей! Не пытайтесь сделать это дома! Этот скрипт довольно нестабилен в отношении изменений в XML):

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

Однако XSLT и xsltproc, безусловно, являются предпочтительным решением для таких тяжелых задач обработки XML.

...