gpt4 book ai didi

json - 如何获取大型json文件中日期字段的最大值?

转载 作者:行者123 更新时间:2023-12-04 10:03:47 25 4
gpt4 key购买 nike

我有一个大约 500MB 的大型 JSON 文件,它是 URL 调用的响应。我需要使用 shell 脚本(bash)获取“结果”数组中 JSON 文件中“日期”字段的最大值。目前使用 jq 作为下面。Below 适用于较小的文件,但对于较大的文件,它返回 null。

maxDate=$(cat ${jsonfilePath} | jq '[ .results[]?.date ] | max') 

请帮忙。谢谢!我是 shell 脚本、json、jq 的新手。

示例/输入 json 文件内容:
{
"results": [
{
"Id": "123",
"date": 1588910400000,
"col": "test"
},
{
"Id": "1234",
"date": 1588910412345,
"col": "test2"
}
],
"col2": 123
}

最佳答案

给定命令行上的 --stream 选项,JQ 不会将整个输入加载到内存中,而是逐个读取输入标记,以这种方式生成数组:

[["results",0,"Id"],"123"]
[["results",0,"date"],1588910400000]
...
[["results",1,"date"],1588910412345]
...

由于此功能,我们只能选择 date s 从输入中找出最大值,而不会耗尽内存(以牺牲速度为代价)。例如:
jq -n --stream 'reduce (inputs|select(.[0][-1]=="date" and length==2)[1]) as $d (null; [.,$d]|max)' file

关于json - 如何获取大型json文件中日期字段的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61691807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com