是否可以使用正则表达式在Puppet中进行字符串替换/转换?
如果$ hostname是“web1”,我希望$ hostname_without_number为“web”。以下是无效的Puppet语法,但我认为我需要这样的东西:
$hostname_without_number = $hostname.gsub(/\d+$/, '')
答案 0 :(得分:39)
是的,这是可能的。
检查木偶功能参考:http://docs.puppetlabs.com/references/2.7.3/function.html
内置了正则表达式替换函数。它可能调用相同的底层gsub函数。
$hostname_without_number = regsubst($hostname, '\d+$', '')
或者,如果您更愿意实际调用Ruby,则可以使用内联ERB模板:
$hostname_without_number = inline_template('<%= hostname.gsub(/\d+$/, "") %>')
答案 1 :(得分:2)
在此页面中:
https://blog.kumina.nl/2010/03/puppet-tipstricks-testing-your-regsubst-replacings-2/comment-page-1/
它的解释非常好,并且有一个很棒的技巧可以用irb来测试你的正则表达式。
这个链接和freiheit的答案我可以用'\'代替'/'来解决我的问题。
$ programfiles_sinbackslash = regsubst($ env_programfiles,'\','/','G')