Intereting Posts
Что это за действие сценария unlink, и при каких условиях? Являются ли пустая строка и "" той же строкой? Странное поведение в команде mv – возможно, проблема с открытым вызовом sys? Хотелось бы сменить каталог на результат, из которого функция Как измерить на Linux пиковая память приложения после того, как закончилась LD_PRELOAD или аналогичный для предотвращения доступа к сети выполнение сценария sh из cron Двойная загрузка windows / debian, нет меню загрузки? Текст с круговым отключением через zip, unzip с ошибкой «лишних байтов» в OS X Как загружаются initramfs, если он находится на файловой системе, которую он должен разблокировать? Как отобразить следующее время планирования для узла TSM? Как запустить скрипт kwin из командной строки? причины для dd-образа почти пустого диска не будут малы после gzip Существует ли эмулятор терминала, который запоминает выходные данные своего последнего запуска? Как избежать ряда подстановочных знаков в сценарии оболочки unix?

Как изменить текст внутри одинарных кавычек?

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

 война {
     baseName = 'myApp'
     version = '1.0.2'
 }

И переменная типа:

variable=b123 

Я хочу отредактировать файл, добавляющий значение переменной $ к номеру версии, поэтому результатом будет:

 война {
     baseName = 'myApp'
     version = '1.0.2_b123'
 }

Как достичь этой цели с помощью сценария bash ?

Будет ли простой sed ?

 $ var=_b123 $ sed -Ee "/version/s/'(.*)'/'\1$var'/" file war { baseName = 'myApp' version = '1.0.2_b123' } 

( /version/ проверяет, содержит ли строка эту строку, если она содержит строку внутри одинарных кавычек с той же строкой ( (...) capture, \1 восстанавливается) плюс текст в переменной. проблема здесь, поскольку все, что нам нужно, безопасно в двойных кавычках.)

Если вам нравится vim, это работает:

 vim +/version +"norm 2f'i_b123" +x file 

Это открывает файл и выполняет три команды:

  • перейти к первой строке, содержащей "версию"

  • войдите в обычный режим, перейдите ко второму ' , перейдите в режим вставки, вставьте _b123

  • писать и оставлять