【问题标题】:Replacing XML content with Regular Expressions and SED用正则表达式和 SED 替换 XML 内容
【发布时间】:2018-01-07 22:50:45
【问题描述】:

我有一个项目实际上是 2 个 Maven 项目。在“子”maven 项目中,我有一个引用父项目中版本的属性:

<myparent.project.version>15.0.0-SNAPSHOT</myparent.project.version>

我想要做的是 bash 编写一些常用命令的脚本,即在创建发布分支时,我想创建一个父 maven 项目,然后更新子 maven 父项目,但我错过了如何更新这个价值:

我希望能在工作中有所收获: 其中 newVersion = 16.0.0

$ sed -i "s/\<myparent.project.version\>[0-9.]+-SNAPSHOT\<\/myparent.project.version\>/<myparent.project.version>$newVersion-SNAPSHOT<\/myparent.project.version>/g" pom.xml

我已经用https://regex101.com/ 检查了正则表达式(\&lt;myparent.project.version\&gt;[0-9.]+-SNAPSHOT\&lt;\/myparent.project.version\&gt;),它与我要在我的 pom.xml 文件中替换的行匹配,但由于某种原因,我无法让 sed 正常工作。

有什么想法吗?

【问题讨论】:

    标签: regex xml bash sed


    【解决方案1】:

    您应该使用像XMLStarlet 这样的xml 解析器。也就是说,对于那个简单的替换,你可以试试这个 GNU sed:

    sed "s/<myparent\.project\.version>[0-9.]\+-SNAPSHOT<\/myparent\.project\.version>/<myparent.project.version>$newVersion-SNAPSHOT<\/myparent.project.version>/g" file
    

    您必须转义一个或多个量词:\+ 和点:\.,但不能转义 &lt;&gt;\&lt;\&gt; 用于 GNU sed 的字边界)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 2018-08-22
      • 2019-10-16
      • 2014-10-28
      • 2010-11-23
      • 2013-08-25
      • 1970-01-01
      相关资源
      最近更新 更多