Использование sed для замены строки в двойных кавычках переменной bash - PullRequest
1 голос
/ 14 октября 2019

У меня есть файл yaml, в котором я пытаюсь создать число в цикле и заменить его новой вычисляемой переменной.

Строка, которую я хочу заменить, выглядит следующим образом:

 # genesis_gas_limit:            "16000000" ## Used to set genesis gas limit

Я планирую поместить это в цикл, и поэтому мне бы понравилось, если бы sed мог взять подстановочный знак, т.е.

 # genesis_gas_limit:            "*" ## Used to set genesis gas limit

Я пробовал это

sed -i 's/ genesis_gas_limit:/c\ genesis_gas_limit: $GASLIMIT' examples/values-local.yaml

, ноя получаю следующую ошибку:

sed: 1: "examples/values-local.yaml": invalid command code e

Буду признателен за любые указатели на этот

1 Ответ

1 голос
/ 14 октября 2019

Вы можете заменить genesis_gas_limit: и любой контент, следующий за ним, genesis_gas_limit: и новым значением. Использование GNU sed:

sed -i "s/ genesis_gas_limit:.*/ genesis_gas_limit: \"$GASLIMIT\"/" examples/values-local.yaml

Использование BSD sed (в OSX):

sed -i.bak -e "s/ genesis_gas_limit:.*/ genesis_gas_limit: \"$GASLIMIT\"/" examples/values-local.yaml
...