1

我有一个具有以下初始结构的文件“stats.json”

[{
"price": 66.55,
"created": "2018-02-24T14:32:57"
}]

使用 bash/curl 脚本,我每 10 分钟从 api 获取数据并将其保存到“temp.json”

{
"price": 88.55,
"created": "2018-02-24T15:32:57"
}

我想合并 temp.json(每 10 分钟更新一次)并填充 stats.json 文件。我试图用“jq”来做,但没有成功。

4

1 回答 1

4

将 temp.obj 中的项目添加到 stats.json 中的数组的一种方法:

jq —-slurpfile temp temp.obj '. + $temp' stats.json

另一种方式:

jq —s '.[0] + [.[1]]' stats.json temp.json

(如果你想覆盖 stats.json,那么我建议使用sponge如下图所示。)

但是,如果可能的话,将 stats.json 维护为 JSONL 格式的日志文件几乎肯定会更好:http: //jsonlines.org/

也就是说,temp.json 中的每个对象都将作为一行附加到 stats.json:

jq -c temp.json >> stats.json

这当然假设 stats.json 最初是空的或已经是 JSONL 格式。要将现有的 stats.json 转换为 JSONL,您可以执行以下操作:

cp -p stats.json stats.json.bak

jq -c .[] stats.json | sponge stats.json
于 2018-02-24T16:59:02.160 回答