Некоторые администраторы для замены значений переменных в структурированных файлах (JSON или YAML) используют sed или регулярные выражения. Это не всегда дает нужный результат. Гораздо проще использовать готовые утилиты jq или yq для обработки структурированных файлов.
Для JSON файлов можно использовать jq.
Чтобы установить jq в Ubuntu:
$ sudo apt update
$ sudo apt install -y jq
Проверьте версию:
$ jq --version
Чтобы изменить значение переменной в JSON файле, выполните:
$ jq '.grocery.fruits= "banana "' file.json
В этом примере мы задали новое значение для переменной .grocery.fruits.
Можно обновить значение в JSON файле с помощью переменной:
variable="apple"; jq --arg variable "$variable" '.foo.bar = $variable' file.json
Для YAML файлов нужно использовать утилиту yq. Чтобы установить эту утилиту:
$ sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
$ sudo chmod a+x /usr/local/bin/yq
$ yq --version
Чтобы изменить значение переменной в YAML файле, выполните команду:
$ yq -i '.grocery.fruits=orange' file.yaml