是否可以使用正則表達式在Puppet中進行字符串替換/轉換?Puppet中的字符串替換?
如果$ hostname是「web1」,我希望$ hostname_without_number是「web」。以下是無效的Puppet語法,但我認爲我需要類似如下:
$hostname_without_number = $hostname.gsub(/\d+$/, '')
是否可以使用正則表達式在Puppet中進行字符串替換/轉換?Puppet中的字符串替換?
如果$ hostname是「web1」,我希望$ hostname_without_number是「web」。以下是無效的Puppet語法,但我認爲我需要類似如下:
$hostname_without_number = $hostname.gsub(/\d+$/, '')
是的,這是可能的。
檢查木偶功能參考: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+$/, "") %>')
在這個頁面:
這是相當不錯解釋和測試你的正則表達式與irb有一個奇妙的技巧。
通過這個鏈接和freiheit的答案,我可以用'\'替換'/'來解決我的問題。
$ programfiles_sinbackslash = regsubst($ env_programfiles, '\', '/', 'G')
謝謝!這次我將使用內置的regsubst(),但我很高興知道inline_template!這非常靈活。 – richardkmiller
值得指出的是'regsubst()'也支持第四個位置的標誌arg。諸如'G'之類的標誌將全局替換所提供的字符串中的所有匹配。 – killthrush