BASH: изменение одной переменной в строке - PullRequest
0 голосов
/ 09 октября 2018

Предположим, файл содержит строку:

PARAMETER = 10   # Comment ....

В скрипте Bash я обычно изменяю значение PARAMETER с помощью

sed -i "s/PARAMETER = .*/PARAMETER = 20/" FILE

, но после этого комментарий стирается.Любое предложение для его сохранения?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

.* означает any character, reapeated any amount of time.По этой логике # попадает в эту категорию и будет захвачено.

Чтобы избежать этого, самым простым способом является использование отрицательного символьного класса, то есть запись any character that isn't in a set of specific chracters

Синтаксисis [^<any character you don't want>]

Вы можете написать:

sed -i "s/PARAMETER = [^#]*/PARAMETER = 20 /" FILE
0 голосов
/ 09 октября 2018

Вам необходимо найти соответствие для любых последующих комментариев.

sed -i "s/PARAMETER = [0-9]*\(.*\)/PARAMETER = 20 \1/" FILE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...