1
我試圖過濾AWS ECR image list作爲JSON與jq和正則表達式返回。通過jq中的變量傳遞正則表達式
下面的命令按預期方式工作,並返回過濾列表:
aws ecr list-images --registry-id 123456789012 --repository-name repo | jq '.imageIds | map(select(.imageTag)) | map(select(.imageTag | test("[a-z0-9]-[0-9]")))'
[
{
"imageTag": "bbe3d9-2",
"imageDigest": "sha256:4c0e92098010fd26e07962eb6e9c7d23315bd8f53885a0651d06c2e2e051317d"
},
{
"imageTag": "3c840a-1",
"imageDigest": "sha256:9d05e04ccd18f2795121118bf0407b0636b9567c022908550c54e3c77534f8c1"
},
{
"imageTag": "1c0d05-141",
"imageDigest": "sha256:a62faabb9199bfc449f0e0a6d3cdc9be57b688a0890f43684d6d89abcf909ada"
}
]
但是,當我試圖通過正則表達式作爲參數傳遞給它JQ返回一個空數組。
aws ecr list-images --registry-id 123456789012 --repository-name repo | jq --arg reg_exp "[a-z0-9]-[0-9]" '.imageIds | map(select(.imageTag)) | map(select(.imageTag | test("$reg_exp")))'
[]
我已經嘗試了多種方式來傳遞該變量,但只是不能得到它的工作。其他相關信息可能是我在Mac上使用zsh,而我的jq版本是jq-1.5。任何幫助表示讚賞。
謝謝!就是這樣。我在發佈這個問題之前試過,但顯然我錯過了一些東西,並得到解析錯誤。 –