如何使用 jq 过滤包含特定值的字符串数组

3

如何使用 jq 过滤包含字符串 "edp-api-dev" 的内容?

{
    "serviceArns": [
        "arn:aws:ecs:us-east-1:1234:service/splat-dev/abc-api-dev-ecs-abc-api-man-1920299",
        "arn:aws:ecs:us-east-1:1234:service/edp-api-dev-ecs-edp-api-man-721g8a7d",
        "arn:aws:ecs:us-east-1:1234:service/tsm-frontend-dev-ecs-tsm-frontend-man",
        "arn:aws:ecs:us-east-1:1234:service/doc-svc-dev-ecs-doc-svc-man",
        "arn:aws:ecs:us-east-1:1234:service/wwk-frontend-dev-ecs-wwk-frontend-man-8fea6a0b",
        "arn:aws:ecs:us-east-1:1234:service/xyaz-fsse-ecs-xyaz-fsse-man"
    ]
}

我尝试了

aws ecs list-services --cluster splat-dev --profile mfa | jq -r '.serviceArns[] | select( . | contains("edp-api-dev")'

但是出现了语法错误


当你遇到语法错误时,明确指出错误是什么是很好的。在这种情况下,我得到了jq: error: syntax error, unexpected $end, expecting ';' or ')',这基本上告诉你问题所在,即你缺少一个闭括号。 - undefined
1个回答

7
我忘记了括号的闭合符号:
aws ecs list-services --cluster splat-dev --profile mfa |
  jq -r '.serviceArns[] | select(contains("edp-api-dev"))'
#                                                       ^

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接