栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用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
以这种方式使用允许任意有效地处理许多对象。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号