【问题标题】:Efficiently get the first record of a JSONL file高效获取 JSONL 文件的第一条记录
【发布时间】:2016-03-02 14:51:27
【问题描述】:

是否可以在不消耗整个流/文件的情况下有效地获取JSONL 文件的第一条记录?我能够低效地这样做的一种方法是:

curl -s http://example.org/file.jsonl | jq -s '.[0]'

我意识到head 可以在这里用于提取第一行,但假设文件可能不使用换行符作为记录分隔符,并且可能只是连接的对象或数组。

【问题讨论】:

  • JSONL 规范要求:“行分隔符为 '\n'”;因此,如果文件是 JSONL,则使用标准 *ix 工具(例如 head)就可以了,除非您当然希望输出打印得非常漂亮。但请注意,jq 不保证保留数值。

标签: json jq jsonlines


【解决方案1】:

如果我理解正确,JSONL 格式只会返回一个 JSON 对象流,jq 可以很好地处理这些对象。最好的情况是您想要第一个项目,您可以使用input 过滤器来获取第一个项目。

我认为你可以这样做:

$ curl -s http://example.org/file.jsonl | jq -n 'input'

您需要空输入-n 不立即处理输入,然后input 只从流中获取一个输入。无需遍历输入流的其余部分。

【讨论】:

  • 请注意,如果你想发出 JSONL,jq 有 -c 标志,可以很好地做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-08
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多