jq

How to filter using jq array of strings which contains a specific value


How do I filter using jq which contains string "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"
    ]
}

I tried

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

but get syntax error


Solution

  • I forgot the closing parenthesis:

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