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

如何使用jq单行命令从JSON列表中提取元素排名信息

jq提取JSON列表排名的单行实现方案

需求

使用jq单行命令,从JSON结构中提取分类下的列表元素排名,元素在列表中的排列顺序即为其对应排名位次。

示例输入

文件中每个JSON对象实际为单行存储,格式化后结构参考:

{
    "category":"triathlon",
    "athletes_list":[
        {"athlete_name": "Ubain Solt"},
        {"athlete_name": "Jon Snow"},
        {"athlete_name": "Mickey Mouse"}
    ]
}
{
    "category":"swimming",
    "athletes_list":[
        {"athlete_name": "Picheal Phelms"},
        {"athlete_name":"Lacky Kedetie"}
    ]
}

期望输出

{"a":"Ubain Solt", "r":0, "c":"triathlon"}
{"a":"Jon Snow", "r":1, "c":"triathlon"}
{"a": "Mickey Mouse", "r":2, "c":"triathlon"}
{"a": "Picheal Phelms", "r":0, "c":"swimming"}
{"a": "Lacky Kedetie", "r":1, "c":"swimming"}

执行命令

将命令末尾的input.json替换为实际文件路径即可运行:

jq -c '. as $root | .athletes_list | to_entries[] | {a: .value.athlete_name, r: .key, c: $root.category}' input.json

命令逻辑说明:

  • -c参数指定输出紧凑单行JSON,匹配要求的输出格式
  • 先将顶层分类对象暂存为变量,避免遍历运动员列表时丢失分类字段上下文
  • 通过to_entries将数组转换为带索引键的结构,直接用数组索引作为排名值
  • 最终组装输出对象,分别映射运动员姓名、排名、分类三个字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:31:03