使用sed使用正则expressuib更改pom/xml元素值

使用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}%$

我有一个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}%${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