gpt4 book ai didi

json - 如何跳过 jq 输入中的前 n 个对象

转载 作者:行者123 更新时间:2023-12-01 05:50:21 25 4
gpt4 key购买 nike

我有一个非常大的对象流,我正试图将其导入 MongoDB。在大约 10k 个对象之后,我一直遇到管道损坏,因此我希望能够更新我的导入脚本以跳过已经导入的对象并从第一个丢失的对象开始。

在我看来,这个工具应该是 jq。我需要的是一种跳过(产生空)第 n 之前的所有项目,然后按原样输出其余项目的方法。

我已经尝试使用 foreach 来维护一个对象计数器,但对于我的小测试样本中的所有对象(使用 bash here 文档),我一直以 1 作为计数器的值结束:

$ jq 'foreach . as $item (0; (.+1); [ . , if . < 2 then empty else $item end ])' <<"end"
> { "item": "first" }
> { "item": "second" }
> { "item": "third" }
> { "item": "fourth" }
> end

输出结果是:

[
1
]
[
1
]
[
1
]
[
1
]

欢迎提出任何建议。

最佳答案

def skip(n; stream):
foreach stream as $s (0; .+1; select(. > n) | $s);

例子:

skip(1000; inputs)

(当使用 inputs 和/或 input 时,不要忘记您可能需要使用 -n 命令行选项。)

大锤方法

try (range(0; 1000) | input | empty), inputs

在这种情况下,try 是必要的,以避免在项目数量少于请求的数量时发生错误。

关于json - 如何跳过 jq 输入中的前 n 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45580088/

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