Как обновить файл XML с помощью строки замены с помощью gsub awk? - PullRequest
0 голосов
/ 28 мая 2019

Я застрял в разработке сценария на основе awk для анализа номера версии родительского поля в файле pom.xml и обновления с номером версии замены на это родительское поле в том же файле.

Примечание

awk --version
GNU Awk 4.0.2
Copyright (C) 1989, 1991-2012 Free Software Foundation.

Я разработал 98% сценария, я даже получаю правильный / требуемый результат на экране, но я не мог понять, как написать его каквесь файл с приложенным обновлением версии.

Вывод моего скрипта

Artifact id : xmp_job_manager
Found Version : 18.1.1
Replaced Version : 3.700.20011

Пример кода

    #Author : Vivin Neelankavil
    #upvote my post if you find it useful
    awk '/parent/, /\/parent/ {
    artifact[1]="xmps_job_manager"
    artifact[2]="xmp_job_manager"
    version[1]="3.700.200"
    version[2]="3.700.20011"
    if($1 ~ /^<artifactId/)
    {
            d=substr($1,13,(length($1)-25))
            print "Artifact id : " d
            for(j=1;j<=4;j++)       
            {
                    if(d==artifact[j])
                    {
                            getline
                            if($1 ~ /^<version/)
                            {       
                                    c=substr($1,10,(length($1)-19))
                                    print "Found Version : " c
                                    gsub('c',version[j],$1)
                                    k=substr($1,10,(length($1)-19))
                                    print "Replaced Version : " k
                            }
                    }
            }
    }
    }' pom.xml

Мне потребуется обновить файл pom.xml с замененным номером версии, как показано ниже

До

    <name>Job Manager Implementation</name>
    <packaging>bundle</packaging>
    <description>Job Manager Implementation</description>
    <parent>
        <groupId>com.cisco.xmp</groupId>
        <artifactId>xmp_job_manager</artifactId>
        <version>18.1.1</version>
    </parent>
    <properties>
        <xmp.xmp_usermgmt.version>18.1.1</xmp.xmp_usermgmt.version>

После

    <name>Job Manager Implementation</name>
    <packaging>bundle</packaging>
    <description>Job Manager Implementation</description>
    <parent>
        <groupId>com.cisco.xmp</groupId>
        <artifactId>xmp_job_manager</artifactId>
-->         <version>3.700.200</version>
    </parent>
    <properties>
        <xmp.xmp_usermgmt.version>18.1.1</xmp.xmp_usermgmt.version>

1 Ответ

0 голосов
/ 04 июня 2019

Спасибо, я нашел свое решение, используя xmllint ...

...