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

如何用jq对JSON中id字段去重并按字母排序输出?

问题描述

给定如下JSON结构:

{ 
  "root": {
    "elements": [
        {
          "id": "abcd"
        },
        {
          "id": "efgh"
        },
        {
          "id": "abcd"
        }
    ]
  }
}

需要提取id字段的值,按字母顺序排序并去除重复项,期望输出:

abcd
efgh

使用jq '.root.elements[].id'可提取所需数据,但unique命令要求输入字符串/数字数组,当前直接提取的是分散的字符串而非数组。需要跨操作系统通用的方案,不能依赖sort、unique等Unix工具。

解决方案

可以通过jq的数组构造和内置命令组合实现需求,完整命令如下:

jq -r '[.root.elements[].id] | unique | sort | join("\n")' input.json

各部分作用说明:

  • [.root.elements[].id]:将提取到的所有id值封装为一个字符串数组,满足unique和sort的参数要求
  • unique:对数组元素去重
  • sort:对去重后的数组按字母顺序排序
  • join("\n"):将数组元素用换行符连接成单行字符串
  • -r参数:让jq输出原始字符串(不带双引号),匹配期望的输出格式

执行该命令后,输出结果与预期一致:

abcd
efgh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:39:20