私は同じ一般的な前提で私が見つけることができるほぼすべての質問を読んできましたが、私は3回近く近づいてきましたが、私はこの作業を行うことができません。jqを使ってJSONファイルに新しい鍵ペアを追加
parameters.json
と呼ばれるJSONファイルがあり、そのようなキーペアがあるとします。 (共有のために短縮)
[
{
"ParameterKey": "Foo1",
"ParameterValue": "Bar1"
},
{
"ParameterKey": "Foo2",
"ParameterValue": "Bar2"
}
]
私はだから私は
[
{
"ParameterKey": "Foo1",
"ParameterValue": "Bar1"
},
{
"ParameterKey": "Foo2",
"ParameterValue": "Bar2"
},
{
"ParameterKey": "Foo3",
"ParameterValue": "Bar3"
}
]
ユースケース&試み
のようなファイルで終わる{
"ParameterKey": "Foo3",
"ParameterValue": "Bar3"
}
を言って、別のキーペアを追加します
私はAWSのパラメータファイルをコピーして更新するbashスクリプトを書いています - これはwheです鍵ペアが入ってきます。既存のファイルをコピーするときに、新しい鍵ペアを追加する必要があります。私はif/thenをうまくやることができます。それは物理的に新しい鍵ペアを追加しています。私は、私は本当にそれだけで罰金鍵ペアを生成しながら、理解していないこの不格好な回避策は、になってしまったグーグルのトンで
は、parameters.jsonに戻し、それを追加しませんitem='{"ParameterKey": "RTSMSnapshotID"}'
jq --argjson item "$item" '$item + {"ParameterValue": ""}' parameters.json
私はキーペアがコマンドラインで正しく私に印刷されるので、私は| sponge parameters.json
を追加すると思っていますが、空のファイルを返します。
また、ファイルの最後の行を削除して新しい鍵ペア(とEOF)を追加するsed回避策も考えましたが、もちろんsedは改行でうまく動かず、うまく動作しません。
私は、bashのものとjqのものを使用するソリューションにはオープンしています。私はまだbash/jq noobですので、詳細な説明が分かります。
これは新しいキーペアを期待通りに追加しますが(感謝!)、出力をコマンドラインに出力します。それを 'parameters.json'にパイプで戻す方法は? – Alex
jq FAQページ(https://github.com/stedolan/jq/wiki/FAQ)で、-i – peak
を検索してください。誰かがこれを使用する必要がある場合に備えて、 '| sponge parameters.json'を使用して簡単に回避することができます。 – Alex