从另一个json文件向json文件中的数组追加;jq";

从另一个json文件向json文件中的数组追加;jq";,json,bash,logging,jq,jsonlines,Json,Bash,Logging,Jq,Jsonlines,我有一个文件“stats.json”,初始结构如下“ 使用bash/curl脚本,我每10分钟从api获取一次数据,并将其保存到“temp.json” 我想合并temp.json(每10分钟更新一次)并填充stats.json文件。我尝试使用“jq”进行合并,但没有成功。将temp.obj中的项添加到stats.json中的数组的一种方法: jq —-slurpfile temp temp.obj '. + $temp' stats.json jq -c temp.json >>

我有一个文件“stats.json”,初始结构如下“

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


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

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

jq —-slurpfile temp temp.obj '. + $temp' stats.json
jq -c temp.json >> stats.json
另一种方式:

jq —s '.[0] + [.[1]]' stats.json temp.json
(如果您想覆盖stats.json,那么我建议使用
海绵
,如下所示。)

但是,如果可能的话,几乎可以肯定最好将stats.json作为JSONL格式的日志文件进行维护:

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

jq —-slurpfile temp temp.obj '. + $temp' 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

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

jq —-slurpfile temp temp.obj '. + $temp' stats.json
jq -c temp.json >> stats.json
另一种方式:

jq —s '.[0] + [.[1]]' stats.json temp.json
(如果您想覆盖stats.json,那么我建议使用
海绵
,如下所示。)

但是,如果可能的话,几乎可以肯定最好将stats.json作为JSONL格式的日志文件进行维护:

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

jq —-slurpfile temp temp.obj '. + $temp' 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

文件越长,速度越慢,成本越高(此外,不断重写旧数据会增加损坏或丢失的风险);我强烈建议采纳peak的建议,并将其更改为可以附加的格式,作为一种固定时间操作。多亏了提醒,超过7-14天的数据将被清除。文件越长,清除速度越慢,成本越高(此外,不断重写旧数据会增加损坏或丢失的风险);我强烈建议采纳peak的建议,并将其更改为可以附加为固定时间操作的格式。多亏了提醒,超过7-14天的数据将被清除。jq-c temp.json>>stats.json有没有办法在输入后添加逗号?是的,当然,但为什么要这样做?这会破坏一切。m想法是这样的使用换行符作为“分隔符”。@peak我想我确实理解@nelasx;我想我们(他和我)都没有理解的是,一个充满对象的文件也可以作为一个具有[{object},{object}]的文件来工作但是你的帖子让我意识到了这种可能性!tksjq-c temp.json>>stats.json有没有办法在输入后添加逗号?是的,当然,但你为什么要这样做?那会破坏一切。m想法是使用换行符作为“分隔符”。@peak我想我确实理解@nelasx;我想我们都不理解(他和我)一个充满对象的文件也可以作为一个包含[{object},{object}]的文件使用,但是你的帖子让我意识到了这种可能性