Как увеличить число в нескольких файлах, если число не всегда одинаково? - PullRequest
4 голосов
/ 17 декабря 2008

У меня есть несколько файлов, содержащих эту строку

Release: X

Я хочу увеличить X во всех файлах.

Если бы X был постоянным между файлами, я мог бы использовать bash-скрипт, циклически повторяющий файлы и выполняющий ($ 1, содержащий прежний номер выпуска, и $ 2, новый, т.е. $ 1 + 1):

sed 's/Release: '$1'/Release: '$2'/' <$file >$file.new

Теперь, как мне быть, если номер релиза отличается между файлами?

Это выполнимо с помощью sed?

я должен использовать другой инструмент?

Ответы [ 2 ]

13 голосов
/ 17 декабря 2008

Используйте awk - это именно то, что нужно для этого:

awk '/Release: [0-9]+/ { printf "Release: %d\n", $2+1 }' < $file > $file.new

Перевод:

  • Поиск строк, содержащих «Release:», за которыми следуют одна или несколько цифр.
  • Распечатать «Release:», затем номер и перевод строки. Число - это второе слово в строке ввода (цифры) плюс 1.
8 голосов
/ 17 декабря 2008

Этот однострочный perl будет делать то же самое, что и скрипт awk, но не уничтожит остальную часть файла или остальные строки, содержащие выпуск.

 perl -pe "$_=~s/Release: (\d+)/'Release: '. ($1+1)/e;" < file > file.new
...