0

バージョン番号(major.minor.build)要素を含むXMLファイルがあり、awkを使用してその値をインクリメントしたいと思います(ファイルの残りの部分はそのままにしておきます)。

たとえば、ファイルに次のものが含まれている場合:

<ProductVersion>1.0.1</ProductVersion>

次のように変更したいのですが。

<ProductVersion>1.0.2</ProductVersion>

物事を単純化する場合、ProductVersion要素は常にそれ自体で1行にあると想定できます。

[NB。これがXMLを操作するための迅速で汚い方法であることは知っていますが、現在のニーズを満たしています。つまり、個人的な使用のために、MacでMonoのxbuildを使用して実行するスクリプトを作成します。MacでMSBuildコミュニティタスクなどを動作させる代わりに、Execタスクを使用しています(今のところ)。]

4

2 に答える 2

2

製品バージョンはそれ自体でライン上にあると想定できるので、ここに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

最後の数だけをインクリメントすることに注意してください。

于 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 に答える