我有一个字符串类似于这样:
我使用
docker login -u username -p password docker-registry-url
。我使用
execute
在Groovy脚本中执行该命令。为了调试目的,在执行之前,我打印出该命令,但由于它包含敏感数据,因此我混淆了用户名和密码。def printableCmd = cmd.toString()
def m = printableCmd =~ /(?:.+) -u (.+) -p (.+) (?:.+)/
if (m.matches() && m[0].size() >= 3) {
printableCmd = m[0][-1..-2].inject(m[0][0]) { acc, val -> acc.replaceAll(val, "***") }
}
以上代码按预期工作,并打印出 docker login -u *** -p *** docker-registry-url
,但我想知道是否有更加惯用的方法来实现这一点。请注意,我不想删除捕获的组,只是用星号替换它们,从而清楚地表明该命令并没有错误,而是为了安全目的而被混淆。