AWS CLI 输出附加到 json 文件

AWS CLI 输出附加到 json 文件

我有一个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文件与管道左侧命令的输出一起读取到数组的两个单独元素中。然后它会使用指令合并这两个元素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

相关内容