簡體   English   中英

如何使用AWK增加XML元素的(版本)值?

[英]How would I increment the (version) value of an XML element using AWK?

我有一個包含版本號(major.minor.build)元素的XML文件,我想使用awk增加該值(不影響文件的其余部分)。

例如,當文件包含:

<ProductVersion>1.0.1</ProductVersion>

我希望將其更改為:

<ProductVersion>1.0.2</ProductVersion>

如果它簡化了事情,我們可以假定ProductVersion元素將始終位於一行上。

[注意。 我知道這是一種操作XML的快速而骯臟的方法,但是它滿足了我當前的需求-即創建一個供我個人使用的腳本,以便在Mac上使用Mono的xbuild運行。 我正在使用Exec任務,而不是嘗試在Mac上運行MSBuild社區任務等(目前)。]

由於我們可以假定產品版本是獨立的,因此這是一種方法

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

請注意,它只會增加最后一個數字。

使用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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM