パペットで正規表現を使用して文字列の置換/変換を行うことはできますか?パペットの文字列置換?
$ hostnameが "web1"の場合、$ hostname_without_numberを "web"にします。以下は有効なパペット構文ではありませんが、私は次のようなものが必要です:
$hostname_without_number = $hostname.gsub(/\d+$/, '')
パペットで正規表現を使用して文字列の置換/変換を行うことはできますか?パペットの文字列置換?
$ hostnameが "web1"の場合、$ hostname_without_numberを "web"にします。以下は有効なパペット構文ではありませんが、私は次のようなものが必要です:
$hostname_without_number = $hostname.gsub(/\d+$/, '')
はい、可能です。
がpuppet関数の参照を確認してください:http://docs.puppetlabs.com/references/2.7.3/function.html
に内蔵された正規表現置換機能がありますそれはおそらく同じ基本GSUB関数を呼び出します。
$hostname_without_number = regsubst($hostname, '\d+$', '')
それとも、実際にルビーを呼び出すことを好むならば、あなたはインラインERBテンプレートを使用することができます。このページで
$hostname_without_number = inline_template('<%= hostname.gsub(/\d+$/, "") %>')
を:
、それは非常によくあります説明し、irbで正規表現をテストするための素晴らしいトリックがあります。
このリンクとfreiheitの回答では、 '/'を '\'に置き換えて問題を解決できました。
$ programfiles_sinbackslash = regsubst($ env_programfiles、 '\'、 '/'、 'G')
ありがとう!今度は組み込みのregsubst()を使用しますが、inline_templateについても知ってうれしく思います!それは非常に柔軟です。 – richardkmiller
'regsubst()は4番目のフラグargもサポートしています。 'G'などのフラグは、指定された文字列のすべての一致をグローバルに置き換えます。 – killthrush