jsonファイルに追加されたAWS CLI出力

jsonファイルに追加されたAWS CLI出力

以下の内容がありますsample.json

{key:value}

AWS Secrets CLIコマンドの出力が必要です(secretstring json object)。

{
user:name,
pass:word 
}

上記のJSONファイルに追加され、ファイルは次のようになります。

{
key:value,
user:name,
pass:word
}

私は試しましたが、jqjsonファイルをコマンド出力で上書きし、\エスケープ文字で引用符を付けました。

ベストアンサー1

実際にJSONデータを扱っているとします(質問に表示されている文字列の中に有効なJSONがありません)。

some-json-generating-command | jq -s add sample.json - | sponge sample.json

... some-json-generating-commandJSON出力を生成するコマンドはどこにあり、sample.jsonJSONドキュメントはどこにありますか?

このパイプを使用すると、ファイルはjqパイプの左側のコマンド出力とともに配列の2つの別々の要素に読み込まれます。次に、指示を使用して2つの要素をマージしますadd。結果出力はGNUに送信されsponge、GNUは結果をsample.jsonファイルに書き戻します(jq内部編集はできません)。

テスト:

$ jq -c . sample.json
{"key":"value"}
$ jq -c . command-output.json
{"user":"name","pass":"word"}
$ cat command-output.json | jq -s add sample.json - | sponge sample.json
$ cat sample.json
{
  "key": "value",
  "user": "name",
  "pass": "word"
}

GNUが存在しない場合は、spongeファイルのコピーからパイプを実行sample.jsonし、出力を元の名前で書き込み、パイプが正常に実行されると一時ファイルを削除します。

cp sample.json sample.tmp
some-json-generating-command | jq -s add sample.tmp - >sample.json && rm -f sample.tmp

おすすめ記事