Увеличение переменной с помощью скрипта Bash

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

// // test_file.h // test project // // Created by Test User // #ifndef test_file_constants_h #define test_file_constants_h // Generic includes #include <stdlib.h> #include <string.h> #include <stdbool.h> #define PF_MASTER_VERSION 3.0.0 #define PF_BUILD_VERSION 1 #endif 

Мне нужно написать скрипт, который может увеличивать PF_BUILD_VERSION на каждый каждый раз, когда он запускается. Я пробовал смотреть на sed и AWK и провалился!

2 Solutions collect form web for “Увеличение переменной с помощью скрипта Bash”

Решение на основе awk может быть:

 awk '/^#define PF_BUILD_VERSION / {$3++} 1' infile >outfile && mv outfile infile 

Подход Perl:

 perl -pe 's/^#define PF_BUILD_VERSION \K(\d+)/$1+2/e' file > newfile 

Или, чтобы отредактировать файл на месте:

 perl -i -pe 's/^#define PF_BUILD_VERSION \K(\d+)/$1+2/e' file 
  • Ssh на несколько серверов и объединить файлы в один
  • Inline debug (xxtrace) в скриптах
  • Как добавить верхний и нижний колонтитулы в плоский файл
  • Как включить защиту от температуры процессора
  • Лучший подход к созданию и добавлению содержимого в файлы
  • Копирование и переименование файлов в один каталог с помощью одного сценария оболочки
  • Команда «cp p2 & 2 &» заставляет Konsole исчезать, это ошибка?
  • Поиск ключевого слова в файле PDF
  • Проблема со ссылкой на рабочий каталог в цикле сценария оболочки
  • Мне нужно взять вывод команды и сделать ее именем файла, используя скрипт
  • Запуск сценария bash с php от cron
  • Interesting Posts

    sed string с плохими символами

    Онлайн-сервер Linux

    Разрешения для /etc/ssmtp/ssmtp.conf

    Как только выводить строки, которые моложе 3 месяцев?

    apt-show-versions показывает неправильную информацию для индивидуального пакета deb

    задание cron не перенаправляет вывод в файл

    Используйте sed, чтобы хранить только части файла и изменять его порядок (на основе синтаксиса textWrangler grep)

    Монетный двор 18.1. Целый ряд «Soliciting pool server xxx.xxx.xxx.xxx»

    Ubuntu под VirtualBox 4.3.12 r93733 работает медленно на Windows7 с AVG бесплатно 2011

    Как я могу распечатать и выйти из bash, если оператор backtick не работает

    Запустить сценарий оболочки при установке нового тома

    Как обновить приложение на Debian?

    Установка Chrome на 64-битный Gentoo без доступа суперпользователя

    Можем ли мы иметь разные обои для каждой рабочей области под Gnome?

    Какие правила определяют отношения между родителями и дочерними процессами, запущенными оболочкой через трубу?

    Linux и Unix - лучшая ОС в мире.