Как заменить значение в файле .env на awk? - PullRequest
1 голос
/ 16 апреля 2020

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

{
    "Config" : {
        "host" : "XX.XXX.XX.XXX" ,
        "port" : 3019
    }
}

В скрипте bash у меня есть переменная $myNewIP. Я хочу заменить IP-адрес в файле значением моей переменной с помощью команды awk.

Я попытался

awk '/host/{sub(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})}1 .env

. Мне выдается сообщение об ошибке синтаксиса. Я думал, что это должно работать. Что не так с командой?

1 Ответ

2 голосов
/ 16 апреля 2020

Вы должны использовать JSON -осведомленный инструмент, такой как jq, для работы с JSON файлами, а не awk, sed, et c:

jq --arg myNewIP "$myNewIP" '.Config.host = $myNewIP' .env
{
  "Config": {
    "host": "127.0.0.1",
    "port": 3019
  }
}
...