0

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

例如,当文件包含:

<ProductVersion>1.0.1</ProductVersion>

我希望将其更改为:

<ProductVersion>1.0.2</ProductVersion>

如果它简化了事情,我们可以假设 ProductVersion 元素总是在它自己的一行上。

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

4

2 回答 2

2

由于我们可以假设产品版本单独上线,所以这是一种方法

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

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

于 2011-02-12T10:05:54.640 回答
1

使用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;
于 2011-02-12T17:09:24.463 回答