我的 JSON
输入文件如下:
{
"Name":"SA",
"Password":"yyyyy",
"Mappings" : {
"RegionMap" : {
"us-east-1" : { "AMI" : "xxxxxx" },
"us-east-2" : { "AMI" : "" },
"us-west-1" : { "AMI" : "" },
"us-west-2" : { "AMI" : "" },
"ca-central-1" : { "AMI" : "" },
"eu-central-1" : { "AMI" : "" },
"eu-west-1" : { "AMI" : "" },
"eu-west-2" : { "AMI" : "" },
"ap-south-1" : { "AMI" : "" },
"ap-southeast-1" : { "AMI" : "" },
"ap-southeast-2" : { "AMI" : "" },
"ap-northeast-1" : { "AMI" : "" },
"ap-northeast-2" : { "AMI" : "" },
"sa-east-1" : { "AMI" : "" }
}
}
}
我的任务是更新给定 json 文件中 us-east-1
的 AMI
键的值,并将更新的文件创建为新文件。我正在使用jq带有重定向运算符的插件。它有+运算符,可用于覆盖
对象中的内容。
我的预期
输出是
{
"Name":"SA",
"Password":"yyyyy",
"Mappings" : {
"RegionMap" : {
"us-east-1" : { "AMI" : "abcd" },
"us-east-2" : { "AMI" : "" },
"us-west-1" : { "AMI" : "" },
"us-west-2" : { "AMI" : "" },
"ca-central-1" : { "AMI" : "" },
"eu-central-1" : { "AMI" : "" },
"eu-west-1" : { "AMI" : "" },
"eu-west-2" : { "AMI" : "" },
"ap-south-1" : { "AMI" : "" },
"ap-southeast-1" : { "AMI" : "" },
"ap-southeast-2" : { "AMI" : "" },
"ap-northeast-1" : { "AMI" : "" },
"ap-northeast-2" : { "AMI" : "" },
"sa-east-1" : { "AMI" : "" }
}
}
}
我当前的命令未提供预期的输出,其输出如下:
jq '.Mappings.RegionMap + { "us-east-1":{"AMI":"abcd"}}'
<OldfileName> > <Newfilename>
有人可以帮助我使用重定向运算符实现预期输出吗?
我正在 cygwin 环境和我的 jq 上运行该命令版本是 1.5
。
编辑
在密码 key 后添加了逗号
最佳答案
导致输入 json 无效的第一个问题是这一行(第三行):
...
"Password":"yyyyy" <----
...
后面应该跟,
。
修复该问题后,您可以轻松更新所需的属性值:
jq '.Mappings.RegionMap["us-east-1"].AMI = "abcd"' oldfile > newfile
newfile
内容:
{
"Name": "SA",
"Password": "yyyyy",
"Mappings": {
"RegionMap": {
"us-east-1": {
"AMI": "abcd"
},
"us-east-2": {
"AMI": ""
},
"us-west-1": {
"AMI": ""
},
"us-west-2": {
"AMI": ""
},
"ca-central-1": {
"AMI": ""
},
"eu-central-1": {
"AMI": ""
},
"eu-west-1": {
"AMI": ""
},
"eu-west-2": {
"AMI": ""
},
"ap-south-1": {
"AMI": ""
},
"ap-southeast-1": {
"AMI": ""
},
"ap-southeast-2": {
"AMI": ""
},
"ap-northeast-1": {
"AMI": ""
},
"ap-northeast-2": {
"AMI": ""
},
"sa-east-1": {
"AMI": ""
}
}
}
}
关于json - 使用重定向运算符通过 jq 更新文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45061585/