首页 > 解决方案 > Groovy 中的字符串操作

问题描述

我正在编写一个 groovy 脚本,它将返回 AWS ECS 服务中的任务定义列表,这是相同的代码片段

def p = 'aws ecs list-task-definitions --family-prefix test'.execute() | 'jq .taskDefinitionArns[]'.execute()
p.waitFor()
print p.text

输出是

"arn:aws:ecs:us-west-2:496712345678:task-definition/test:2"
"arn:aws:ecs:us-west-2:496712345678:task-definition/test:3"

现在我只想捕获结果的最后一部分,即test:2test:3等等,没有双引号

我如何使用 Groovy 语言来做到这一点,因为我必须在Jenkins 的主动选择反应参数插件中使用它

标签: jenkinsgroovyamazon-ecs

解决方案


假设:

​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"​​​​​​​​​​​​

尝试 :

text​.split("\n")​​​​​​​​​​​​​.collect {c -> c.split("/").last()}​​​​​​

这将打印一个列表[test:2, test:3]

如果您希望它在一行中而不是在列表中,请使用:

text​.split("\n")​​​​​​​​​​​​​.collect {c -> c.split("/").last()}​​​​​.join(",")​

这打印:test:2,test:3

更新

由于OP的评论,答案毕竟应该是这样的:

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()}​​​​​​ 

推荐阅读