Обновление номера версии в pom.xml с помощью sed/awk

Как насчет:

awk -F '.pgp' '{print $1 FS}'

У меня возникло бы искушение использовать perl -pe 's/\.pgp\K.*//'вместо awk.

0
08.10.2020, 06:32
2 ответа

Учитывая ваш обновленный пример, это может быть то, что вы хотите, используя GNU awk для соответствия 3-го аргумента():

awk 'match($0,/(.*<modelVersion>)([0-9]+)(.*)/,a) {$0=a[1] a[2]+1 a[3]} 1' file

Чтобы обновить исходный файл, вы можете использовать awk -i inplace '...' file, так как для вышеприведенного в любом случае требуется GNU awk, который поддерживает -i inplace.


Оригинальный ответ :Это может быть то, что вы хотите, используя GNU awk для соответствия 3-го аргумента():

awk 'match($0,/(.*<modelVersion>)([0-9]+)(.*)/,a) {$0=a[1] (++cnt) a[3]} 1' file

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

0
18.03.2021, 22:59

Используйте следующий скрипт awk:

awk '/<modelVersion>/ {
        temp = $0
        sub(/.*<modelVersion>/, "", temp)
        sub(/\..*/, "", temp)
        incremented = temp+1
        sub(temp, incremented)
    }
    {   print   }
    '
  • Найдите строку, содержащую modelVersion.
  • Сделайте временную копию всей строки.
  • Удалить<modelVersion>(и все предшествующие ему )из копии строки, …
  • , а затем удалите первый.и все после него. Это оставляет первый компонент номера версии; например, 42.0.042.
  • Добавьте единицу к этому (, например, →43).
  • Затем измените строку ввода, заменив текущий номер с увеличенным номером.

Запустите команду awkс выводом в файл:

awk '(the above)' pom.xml > new.xml
проверьте правильность вывода, а затем
mv new.xml pom.xml
0
18.03.2021, 22:59

Теги

Похожие вопросы