使用sed使用正则expressuib更改pom/xml元素值
我有一个XML文件,我使用sed更改元素“own.version”的值:使用sed使用正则expressuib更改pom/xml元素值,sed,Sed,我有一个XML文件,我使用sed更改元素“own.version”的值: 1.1.77-1 Sed声明: cat pom.xml | sed -e "s%<own.version>${oldVersion}</own.version>%<own.version>${newVersion}</own.version>%" > pom.xml.transformed cat pom.xml | sed-e“s%${oldVersion}%$
1.1.77-1
Sed声明:
cat pom.xml | sed -e "s%<own.version>${oldVersion}</own.version>%<own.version>${newVersion}</own.version>%" > pom.xml.transformed
cat pom.xml | sed-e“s%${oldVersion}%${newVersion}%>pom.xml.xml
现在,我的pom文件将更加通用,我要更改的属性可能是“*.own.version”,例如:
1.1.77快照
我如何使用sed的正则表达式来更改*.own.version的值?既然你告诉你的Jenkins没有
xmlstarlet
,你能试试下面的awk
吗,然后告诉我
##Shell variable
new="1.8"
awk -v new_version="$new" '/own\.version/{sub(/>.*</,">"new_version"<")} 1' Input_file
##Shell变量
new=“1.8”
awk-v new_version=“$new”'/own\.version/{sub(/>.*这一个应该可以工作,它捕获“own.version”的任何前缀
sed“s%.*sed
不适用于此,您可能应该为此使用xmlstarlet
。此更改将在未安装xmlstartet的jenkins服务器上执行。请尝试从所有答案中选择正确答案以完全关闭线程。
<properties>
<a.own.version>1.1.77SNAPSHOT</a.own.version>
</properties>
##Shell variable
new="1.8"
awk -v new_version="$new" '/own\.version/{sub(/>.*</,">"new_version"<")} 1' Input_file
<properties>
<own.version>1.8</own.version>
</properties>
sed "s%<\(.*\)own.version>.*</%<\1own.version>${newVersion}</>%" pom.xml > pom.xml.transformed