我已经阅读了几乎所有我能找到的问题与相同的一般前提下,我已经接近三个不同的时间,但我不能使这项工作。追加新的密钥对JSON文件与jq
给定一个名为parameters.json
的JSON文件,它带有这样的密钥对; (缩短共享的目的)
[
{
"ParameterKey": "Foo1",
"ParameterValue": "Bar1"
},
{
"ParameterKey": "Foo2",
"ParameterValue": "Bar2"
}
]
我要添加另一个密钥对,说
{
"ParameterKey": "Foo3",
"ParameterValue": "Bar3"
}
所以我最终喜欢
[
{
"ParameterKey": "Foo1",
"ParameterValue": "Bar1"
},
{
"ParameterKey": "Foo2",
"ParameterValue": "Bar2"
},
{
"ParameterKey": "Foo3",
"ParameterValue": "Bar3"
}
]
使用案例文件&尝试
我正在写一个bash脚本来复制和更新AWS的参数文件 - 这是密钥对进来。我们有一个新的密钥对,当它们被复制时,需要将它添加到任何现有的文件中。我可以得到如果/然后做得很好,它实际上是增加了一个新的密钥对,这对我来说很困难。
一吨的google搜索,我结束了这个笨重的解决办法,我真的不明白,并同时生成密钥对蛮好的,不添加回parameters.json
item='{"ParameterKey": "RTSMSnapshotID"}'
jq --argjson item "$item" '$item + {"ParameterValue": ""}' parameters.json
我在命令行中将密钥对正确地打印回给我,所以我想添加| sponge parameters.json
,但那会给我一个空文件。
我也考虑过一个sed解决方法,修剪文件的最后一行,然后附加新的密钥对(和EOF),但当然sed不能很好地适应换行符,并且我无法使其工作。
我很喜欢在bash和jq中使用任何东西的解决方案。我仍然是一个bash/jq noob,所以我对此有详细的解释。
这确实增加了新的密钥对预期(谢谢!),但打印输出到命令行。我如何将它重新输入'parameters.json'? – Alex
在jq常见问题页面(https://github.com/stedolan/jq/wiki/FAQ)上,搜索:-i – peak
以防万一有人需要使用此功能 - 事实证明,您可以添加'|海绵parameters.json'如果你有工具安装一个简单的解决方法。 – Alex