【问题标题】:How to sort/unique output using jq如何使用 jq 对输出进行排序/唯一化
【发布时间】:2020-01-21 21:51:18
【问题描述】:

我有如下的json:

% cat example.json
{
    "values" : [
        {
            "title": "B",
            "url": "https://B"
        },
        {
            "title": "A",
            "url": "https://A"
        }
    ]
}

我想根据标题对值进行排序。即预期输出

{
  "title": "A",
  "url": "https://A"
}
{
  "title": "B",
  "url": "https://B"
}

尝试了打击。不工作:

% jq '.values[] | sort' example.json           
jq: error (at example.json:12): object ({"title":"B...) cannot be sorted, as it is not an array

% jq '.values[] | sort_by(.title)' example.json
jq: error (at example.json:12): Cannot index string with string "title"

【问题讨论】:

    标签: json sorting unique jq


    【解决方案1】:

    如果要保留整体结构,可以使用 jq 过滤器:

    .values |= sort_by(.title)
    

    如果要提取 .values 并对数组进行排序,请省略“=”:

    .values | sort_by(.title)
    

    要产生如 Q 所示的输出:

    .values | sort_by(.title)[]
    

    独特性

    有几种方法可以定义“唯一性”,也有几种方法可以实现唯一性。

    一种选择就是使用unique_by 而不是sort_by;另一个(具有不同语义)是使用(sort_by(.title)|unique) 而不是sort_by(.title)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 2017-08-29
      • 2018-10-11
      • 2016-11-10
      相关资源
      最近更新 更多