Regex 如何用awk替换.env文件中的值?
我有一个.env文件,其中包含以下内容:Regex 如何用awk替换.env文件中的值?,regex,awk,environment-variables,Regex,Awk,Environment Variables,我有一个.env文件,其中包含以下内容: { "Config" : { "host" : "XX.XXX.XX.XXX" , "port" : 3019 } } 在bash脚本中,我有一个变量a$myNewIP。我想用awk命令将文件中的IP替换为我的变量值 我试过了 awk '/host/{sub(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})}1 .env 系统提示我有语法错误。我想这应该行得通。命令有
{
"Config" : {
"host" : "XX.XXX.XX.XXX" ,
"port" : 3019
}
}
在bash脚本中,我有一个变量a$myNewIP
。我想用awk
命令将文件中的IP替换为我的变量值
我试过了
awk '/host/{sub(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})}1 .env
系统提示我有语法错误。我想这应该行得通。命令有什么问题?您应该使用类似于
jq
的JSON感知工具来操作JSON文件,而不是awk
、sed
等:
jq --arg myNewIP "$myNewIP" '.Config.host = $myNewIP' .env
{
"Config": {
"host": "127.0.0.1",
"port": 3019
}
}
awk不支持
\d
,请改用[0-9]
。。使用\.
代替\.
。。。另外,您还没有为sub
指定替换字符串,并且在1
之后缺少关闭“
”。。。请参见wrt将shell变量传递给awk