我有一些看起来像这样的简短脚本: 这是一种在 groovy 命令中执行 bash 的方法。
sh (script: 'printf "${INFO} | sed 's/^[^\/]*://g'"',returnStdout: true).trim()
值INFO
IS test/word/fine
。
使用上面的脚本,我想“删除”所有内容,直到(包括)第一个/
. 我无法使其与单引号之间的单引号一起使用。如果那行得通,我可以检查我\/
是否行得通。
显然 Groovy 允许您使用三引号,因此您不必强制命令使用单引号(原文如此)。
sh """printf "${INFO}" | sed 's/^[^\/]*//'"""
还要注意printf
命令中双引号的位置。一个更好的解决方案是说printf '%s' "${INFO}"
但是......你真的需要shell来插入变量的值吗INFO
,如果是这样,你为什么不简单地做sh 'echo "${INFO#*/}"'
?
如果你确实只想替换第一个出现,/g
标志是多余的,所以我把它去掉。您的正则表达式锚定在字符串的开头,因此它只会找到一个匹配项来替换,但是如果说“替换一行中的所有匹配项”,这显然不是您想要的,充其量只会产生误导和混淆。
如果你的测试数据确实不包含冒号,那么你的正则表达式中的冒号是错误的,所以我也把它去掉了。
通常,我们使用不同的分隔符,s%^[^/]*/%%
这样我们就不必在sed
替换中反斜杠转义斜杠。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句