【问题标题】:Selecting and filtering latest element in array选择和过滤数组中的最新元素
【发布时间】:2019-04-23 16:44:08
【问题描述】:

我有以下示例数据:

{
    "Images": [
        {
            "Name": "CoreOS-alpha-1939.0.0-hvm",
            "CreationDate": "2014-12-24T23:00:48.000Z"
        },
        {
            "Name": "CoreOS-stable-522.3.0",
            "CreationDate": "2014-12-24T23:00:48.000Z"
        },
        {
            "Name": "CoreOS-stable-600.3.0",
            "CreationDate": "2019-12-24T23:00:48.000Z"
        }
    ]
}

我正在尝试获取其Name 中包含“稳定”的最新(CreationDate)图像的Name

我的天真尝试是:

jq '.Images[] | select(.Name | contains("stable")) |= sort_by(.CreationDate)' data.json

但是这给了我一个错误,并且只会按CreationDate 对它们进行排序(不仅返回最新的)

【问题讨论】:

    标签: json sorting jq chronological


    【解决方案1】:
    $ jq -r '.Images | map(select(.Name | index("stable"))) | max_by(.CreationDate).Name' file
    CoreOS-stable-600.3.0
    

    因为contains 在检查一个字符串是否包含在另一个字符串中有点过分,所以使用index 代替。
    使用max_by 是因为它避免了排序并产生具有最大值的元素。 CreationDate

    【讨论】:

      猜你喜欢
      • 2010-11-14
      • 2020-12-23
      • 2016-09-19
      • 2020-08-05
      • 1970-01-01
      • 2014-05-26
      • 2017-08-06
      • 2017-07-22
      • 2016-02-13
      相关资源
      最近更新 更多