[编辑:此答案已根据对该问题的修订进行了修订。]
使用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以这种方式使用允许任意有效地处理许多对象。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)