【问题标题】:How would I increment the (version) value of an XML element using AWK?如何使用 AWK 增加 XML 元素的(版本)值?
【发布时间】:2011-02-12 09:42:14
【问题描述】:

我有一个包含版本号 (major.minor.build) 元素的 XML 文件,我想使用 awk 增加该值(保持文件的其余部分不变)。

例如,当文件包含:

<ProductVersion>1.0.1</ProductVersion>

我想改成:

<ProductVersion>1.0.2</ProductVersion>

如果它简化了事情,我们可以假设 ProductVersion 元素将始终独立于一行。

[注意。我知道这是一种操作 XML 的快速而肮脏的方式,但它满足了我当前的需求 - 即创建一个供我个人使用的脚本,以在 Mac 上使用 Mono 的 xbuild 运行。我正在使用 Exec 任务,而不是尝试让 MSBuild 社区任务等在 Mac 上运行(目前)。]

【问题讨论】:

    标签: xml awk increment version-numbering


    【解决方案1】:

    既然我们可以假设产品版本是独立的,这里有一种方法

    awk -F"[><]" '/<ProductVersion>/{ 
        n=split($3,a,".")
        a[n]=a[n]+1
        s=a[1];for(i=2;i<n;i++)s=s"."a[i]; 
        $3=s"."a[n]
        $0="<ProductVersion>"$3"</ProductVersion>"}1' file
    

    注意它只会增加最后一个数字。

    【讨论】:

      【解决方案2】:

      使用XSH2:

      #!/usr/local/bin/xsh
      open prodver.xml;
      $v = //ProductVersion;
      perl {@a = split(/\./, $v);};
      $m = {$a[2]};
      $m += 1;
      map :i { s/\.\d+$/.$m/ } //ProductVersion;
      save;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-12
        • 2020-12-15
        • 1970-01-01
        • 2020-04-23
        • 2020-10-13
        • 2020-08-29
        • 1970-01-01
        相关资源
        最近更新 更多