以下の内容がありますsample.json
。
{key:value}
AWS Secrets CLIコマンドの出力が必要です(secretstring json object
)。
{
user:name,
pass:word
}
上記のJSONファイルに追加され、ファイルは次のようになります。
{
key:value,
user:name,
pass:word
}
私は試しましたが、jq
jsonファイルをコマンド出力で上書きし、\
エスケープ文字で引用符を付けました。
答え1
実際にJSONデータを扱っているとします(質問に表示されている文字列の中に有効なJSONがありません)。
some-json-generating-command | jq -s add sample.json - | sponge sample.json
... some-json-generating-command
JSON出力を生成するコマンドはどこにあり、sample.json
JSONドキュメントはどこにありますか?
このパイプを使用すると、ファイルは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