[Azure] 使用 JMESPath 在 Azure CLI 的輸出中,過濾出符合多重條件的結果
今天想從 Azure Key Vault 裡面,取出所有的 secret 的名稱,
於是執行了下面的 CLI:
$ az keyvault secret list --subscription "${SUBSCRIPTION}" --vault-name ${KEYVAULT} --query "[].name" -o yaml - Jerry - enc-Jerry - Jerry-env-data - Andy - Fred - Fred-env-data - enc-Fred
這上面的查詢裡面, [].name
是所謂的 JMESPath,
讓我們可以選擇 Json 陣列裡每個元素的 name。
只是我原本預期它輸出的只有 Jerry, Andy, Fred 這些名稱,
因為其他的都是我們把這些人的資料也存在 Key Vault 裡面使用的,
要怎麼過濾掉那些包含 enc- 或 env- 的名稱呢?
試了一下,可以用下面的方式來完成:
$ az keyvault secret list --subscription "${SUBSCRIPTION}" --vault-name ${KEYVAULT} --query "[?!contains(name, 'enc-')]|[?!contains(name, 'env-')].name" -o yaml - Jerry - Andy - Fred
上面使用了 |
將符合條件的資料再往後傳,
第一個條件先過濾出 name 中不包含 enc- 這個字的,
第二個條件再過濾出 name 中不包含 env- 這個字的,
因此最後剩下的就是我們要的部分囉~
參考資料:shell – How to handle JMESPath contains filter on attribute that may be null?
(本頁面已被瀏覽過 75 次)