使用jq如何将一个非常大的JSON文件拆分为多个文件,每个文件都有特定数量的对象?

使用jq如何将一个非常大的JSON文件拆分为多个文件,每个文件都有特定数量的对象?,第1张

使用jq如何将一个非常大的JSON文件拆分为多个文件,每个文件都有特定数量的对象

[编辑:此答案已根据对该问题的修订进行了修订。]

使用jq解决问题的关键是

-c
命令行选项,该选项以JSON-
Lines格式(即,在当前情况下,每行一个对象)生成输出。然后,您可以使用诸如
awk
或的工具
split
,将这些行分配到多个文件中。

如果文件不是太大,那么最简单的方法是使用以下方法启动管道:

jq -c '.[]' INPUTFILE

如果文件太大而无法容纳在内存中,则可以使用jq的流解析器,如下所示:

jq -cn --stream 'fromstream(1|truncate_stream(inputs))'

有关流解析器的更多讨论,请参见例如jq
FAQ中的相关部分:https : //github.com/stedolan/jq/wiki/FAQ#streaming-json-
parser

分区

如果要求每个输出文件都是对象数组,那么我可能会用

awk
一步来执行分区和重构,但是还有许多其他合理的方法。

如果输入是JSON对象序列

作为参考,如果原始文件由JSON对象的流或序列组成,则适当的调用将是:

jq -n -c inputs INPUTFILE

inputs
以这种方式使用允许任意有效地处理许多对象。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5615190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存