Замените номер версии в файле на sed в скрипте Bash - PullRequest
0 голосов
/ 06 января 2020

В моем файле project.pro у меня есть:

DEFINES += VERSION=\\\"1.13.1\\\"

Я бы хотел заменить любой текущий номер версии новым на сценарий Bash:

VERSION_MAJOR=1
VERSION_MINOR=14
VERSION_PATCH=1

sed -i "s/\([0-9]+.[0-9]+.[0-9]+\)/\1${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}/" project.pro

Почему это не работает?

До сих пор мне удавалось получить либо вообще никаких совпадений, либо какие-то странные замены "только для последнего числа".

1 Ответ

1 голос
/ 06 января 2020

Вы можете использовать это sed:

sed -i.bak -E "s/[0-9]+\.[0-9]+\.[0-9]+/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH/" project.pro

Несколько проблем в вашей попытке:

  • Без расширенного режима регулярных выражений (-E), + не может быть используется без экранирования.
  • точка должна быть экранирована в регулярном выражении
  • Нет необходимости использовать группу захвата и обратную ссылку \1.

PS: .bak является расширением файла резервной копии, так что вы можете получить оригинальный файл в случае неправильной замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...