我已經閱讀了幾乎所有我能找到的問題與相同的一般前提下,我已經接近三個不同的時間,但我不能使這項工作。追加新的密鑰對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