I am writing a groovy script which will return me the list of Task-Definition in AWS ECS service, Here is the code snippet for the same
def p = 'aws ecs list-task-definitions --family-prefix test'.execute() | 'jq .taskDefinitionArns[]'.execute()
p.waitFor()
print p.text
and the output is
"arn:aws:ecs:us-west-2:496712345678:task-definition/test:2"
"arn:aws:ecs:us-west-2:496712345678:task-definition/test:3"
Now I want to capture only the last part of the result, i.e test:2, test:3 and so on without double quotes
How can I do that using Groovy language as I have to use it in Jenkins's active choice reactive parameter plugin
Assuming:
def text = "arn:aws:ecs:us-west-2:496712345678:task-definition/test:2" + "\n" + "arn:aws:ecs:us-west-2:496712345678:task-definition/test:3"
Try :
text.split("\n").collect {c -> c.split("/").last()}
This prints a list of [test:2, test:3]
If you want it in one line and not in an list, use:
text.split("\n").collect {c -> c.split("/").last()}.join(",")
This prints: test:2,test:3
Update
Due to OP's comment, the answer after all should look something like:
def p = 'aws ecs list-task-definitions --family-prefix test'.execute() | 'jq .taskDefinitionArns[]'.execute()
p.waitFor()
def text = p.text
println text.split("\n").collect {c -> c.split("/").last()}