我一直致力于开发基于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>
答案 0 :(得分:0)
谢谢,我现在使用xmllint找到了解决方案...