首页 > 解决方案 > 如何用 awk 替换 .env 文件中的值?

问题描述

我有一个 .env 文件,其中包含以下内容:

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

在 bash 脚本中,我有一个变量$myNewIP。我想用awk命令用我的变量值替换文件中的 IP。

我努力了

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

系统提示我有语法错误。我认为这应该可行。命令有什么问题?

标签: regexawkenvironment-variables

解决方案


您应该使用 JSON 感知工具jq,例如操作 JSON 文件,而不是awk,sed等:

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

推荐阅读