Как мне увеличить (версию) значение элемента XML с помощью AWK? - PullRequest
0 голосов
/ 12 февраля 2011

У меня есть XML-файл, который содержит элемент номера версии (major.minor.build), и я хотел бы увеличить это значение с помощью awk (оставив остальную часть файла без изменений).

Например, когда файл содержит:

<ProductVersion>1.0.1</ProductVersion>

Я бы хотел изменить его на:

<ProductVersion>1.0.2</ProductVersion>

Если это упрощает вещи, мы можем предположить, что элемент ProductVersion всегда будет на отдельной строке.

[NB. Я знаю, что это быстрый и грязный способ манипулирования XML, но он отвечает моим текущим потребностям - то есть созданию сценария, для моего личного использования, для запуска с использованием Monu's xbuild на Mac. Я использую задачу Exec вместо того, чтобы пытаться заставить задачи сообщества MSBuild и т. Д. Работать на Mac (пока).]

Ответы [ 2 ]

2 голосов
/ 12 февраля 2011

Поскольку мы можем предположить, что версия продукта находится в отдельной строке, вот один из способов

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

Обратите внимание, что он увеличивает только последний номер.

1 голос
/ 12 февраля 2011

Использование 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;
...