使用jq从对象获取N个值

时间:2019-11-27 15:19:12

标签: json jq

我正在尝试从以下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)'通过| .[].name进行jq 'sort_by(.properties.creationTime) | .[].name的管道传输时,我得到了名称的排序列表。

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

2 个答案:

答案 0 :(得分:1)

以下 https://stedolan.github.io/jq/manual/v1.6/#Builtinoperatorsandfunctions

切片应起作用:

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

答案 1 :(得分:0)

我使用的答案如下:

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

其中-4是从底部开始显示的名称数量。

相关问题