JMESPath 查询将搜索与 ?并在 azure cloudshell bash cli 中包含关键字

JMESPath query on combining search with ? and contains keyword in azure cloudshell bash cli

我正在尝试编写一个 azure cli JMESPath 查询来输出所有包含单词 db 并且属于 osType windows.
的名称 为此,我编写了以下查询,它通过调用名为 grep.
的外部 bash 实用程序来工作 但是我无法通过内置函数 contains.
的 JMESPath 语言过滤来完成它 这是一个有效的查询

az vm list --query "[?storageProfile.osDisk.osType=='Windows'].[name]" -o tsv | grep db

这是我尝试但未能获得结果的查询:

az vm list --query "[?storageProfile.osDisk.osType=='Windows'].[?contains(name,'db')]" -o tsv

你只需要使用 and expression:

鉴于查询:

[?storageProfile.osDisk.osType=='Windows' && contains(name,'db')].name

在JSON

[
  {
    "name": "db-of-windows-application",
    "storageProfile": {
      "osDisk": {
        "osType": "Windows"
      }
    }
  },
  {
    "name": "db-of-linux-application",
    "storageProfile": {
      "osDisk": {
        "osType": "Linux"
      }
    }
  },
  {
    "name": "I-am-not-the-database-you-are-looking-for",
    "storageProfile": {
      "osDisk": {
        "osType": "Windows"
      }
    }
  }
]

这将得到:

[
  "db-of-windows-application"
]