Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: runtime в Jul 17, 2013, 21:21



Титла: bash replace value
Публикувано от: runtime в Jul 17, 2013, 21:21
Здр,

1. Надявам се да е за този раздел темата, но смятам, че е за тук.


Сега имам следният проблем и моля за малко помощ!
Имам настройки във cfg файл във вид

Host=10.0.0.1
Port=12345
TargetHost=10.0.0.2
....
N=n


Та искам да сменям стойност на дадена променлива и по този начин става
sed -c -i "s/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/" $CONFIG_FILE


Но, ако напиша само Host 1 ми сменя и на Host и на TargetHost или на първия намерен Host от конфиг файла, което е тъпо.
Има ли начин да сменя стойностите на точно определена фраза, а не на първото срещнато в името съвпадение?


Титла: Re: bash replace value
Публикувано от: neter в Jul 17, 2013, 22:35
Достатъчно ли е за идеята ти да укажеш регулярният израз да взима предвид началото на реда, за да е сигурен, че търсеният стринг започва точно с това, което пишеш? Т.е.
Код
GeSHi (Bash):
  1. sed -i "s/^\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/" $CONFIG_FILE

А какъв е този флаг "-c" в твоя пример?


Титла: Re: bash replace value
Публикувано от: runtime в Jul 17, 2013, 23:38
Грешка при писането. [_]3

Мерси - стана.