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 に答える