[英]Using Awk/Sed - Need to increment value by 5 in File ( Happens to be XML but cant use xml tools)
[英]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.