You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jq中合并多个结果?默认数组构造方式不够便捷

简化jq零散结果合并为数组的操作

现有一段用于分组计数的jq脚本:

jq 'map(select(.sno|startswith("20")))|group_by(.school)[]|{k:.[0].school,len:length}'

执行后会输出多个零散的JSON对象,格式如下:

{k:"xxx",len:111}{k:"aaa",len:22}...

要把这些零散结果合并为单个数组,常规做法是将整个表达式用[]包裹,示例如下:

jq '[map(select(.sno|startswith("20")))|group_by(.school)[]|{k:.[0].school,len:length}]'

注意表达式最外层的[]。

但这种方式在终端环境中操作繁琐,尤其是需要移动光标到表达式开头添加括号,很不方便。有没有更简便的方法?比如直接在原有命令末尾追加内容,无需移动光标,例如尝试执行如下命令:

jq 'map(select(.sno|startswith("20")))|group_by(.school)[]|{k:.[0].school,len:length} | merge'

预期得到的输出格式为:

[
  {
    "k": "xxx",
    "len": 111
  },
  {
    "k": "aaa",
    "len": 22
  }
]

内容的提问来源于stack exchange,提问作者EulerTao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:52:17