首页 > 解决方案 > 使用 jq 从对象中获取 N 个值

问题描述

我正在尝试从以下 json 对象中检索给定数量的值(为简洁起见仅使用 2):

[
     {
    "content": null,
    "deleted": false,
    "metadata": null,
    "name": "name/windows-2016-osDisk.170b8936-d66d-4139-a409-26f4e9d354fe.vhd",
    "properties": {
      "appendBlobCommittedBlockCount": null,
      "blobTier": "P10",
      "blobTierChangeTime": null,
      "blobTierInferred": true,
      "blobType": "PageBlob",
      "contentLength": 136367309312,
      "contentRange": null,
      "contentSettings": {
        "cacheControl": null,
        "contentDisposition": null,
        "contentEncoding": null,
        "contentLanguage": null,
        "contentMd5": "-0q970378r08==",
        "contentType": "application/octet-stream"
      },
      "copy": {
        "completionTime": null,
        "id": null,
        "progress": null,
        "source": null,
        "status": null,
        "statusDescription": null
      },
      "creationTime": "2019-11-21T08:34:33+00:00",
      "deletedTime": null,
      "etag": "0237502375",
      "lastModified": "2019-11-21T08:34:33+00:00",
      "lease": {
        "duration": null,
        "state": "available",
        "status": "unlocked"
      },
      "pageBlobSequenceNumber": null,
      "remainingRetentionDays": null,
      "sequenceNumber": 1,
      "serverEncrypted": true
    },
    "snapshot": null
  },
  {
    "content": null,
    "deleted": false,
    "metadata": null,
    "name": "name/windows-2019-osDisk.f122fb3c-0edb-42a8-b98c-56657b447f15.vhd",
    "properties": {
      "appendBlobCommittedBlockCount": null,
      "blobTier": "P10",
      "blobTierChangeTime": null,
      "blobTierInferred": true,
      "blobType": "PageBlob",
      "contentLength": 136367309312,
      "contentRange": null,
      "contentSettings": {
        "cacheControl": null,
        "contentDisposition": null,
        "contentEncoding": null,
        "contentLanguage": null,
        "contentMd5": "0237502375/hKOg==",
        "contentType": "application/octet-stream"
      },
      "copy": {
        "completionTime": null,
        "id": null,
        "progress": null,
        "source": null,
        "status": null,
        "statusDescription": null
      },
      "creationTime": "2019-11-21T08:35:03+00:00",
      "deletedTime": null,
      "etag": "20397520i3h523",
      "lastModified": "2019-11-21T08:35:03+00:00",
      "lease": {
        "duration": null,
        "state": "available",
        "status": "unlocked"
      },
      "pageBlobSequenceNumber": null,
      "remainingRetentionDays": null,
      "sequenceNumber": 1,
      "serverEncrypted": true
    },
    "snapshot": null
  }
]

我在 jq 中对 creationTime 进行排序,如下所示:jq 'sort_by(.properties.creationTime)'当我通过 make 管道时| .[].namejq 'sort_by(.properties.creationTime) | .[].name我得到一个排序的名称列表。

我的问题是:如何将整数传递给此命令并从最近创建的(底部)开始删除这些名称?

标签: jsonjq

解决方案


遵循 https://stedolan.github.io/jq/manual/v1.6/#Builtinoperatorsandfunctions

切片应该起作用:

jq 'sort_by(.properties.creationTime) | .[-1:]'

推荐阅读