25

是否可以使用正则表达式在 Puppet 中进行字符串替换/转换?

如果 $hostname 是“web1”,我希望 $hostname_without_number 是“web”。以下不是有效的 Puppet 语法,但我认为我需要这样的东西:

$hostname_without_number = $hostname.gsub(/\d+$/, '')
4

2 回答 2

41

是的,有可能。

检查 puppet 函数参考: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+$/, "") %>')
于 2012-05-03T18:11:50.240 回答
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')

于 2013-07-11T07:41:47.360 回答