2012-05-02 32 views
21

Có thể thực hiện thay thế/chuyển đổi chuỗi trong Rối bằng cách sử dụng cụm từ thông dụng không?Thay thế chuỗi trong Rối?

Nếu $ tên máy chủ là "web1", tôi muốn $ hostname_without_number là "web". Cú pháp Múa rối không hợp lệ sau đây, nhưng tôi nghĩ tôi cần một cái gì đó như thế này:

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

Trả lời

37

Có, có thể.

Kiểm tra chức năng múa rối tham khảo: http://docs.puppetlabs.com/references/2.7.3/function.html

Có một chức năng thay thế biểu thức chính quy được xây dựng trong Nó có thể gọi cùng một chức năng gsub tiềm ẩn..

$hostname_without_number = regsubst($hostname, '\d+$', '') 

Hoặc nếu bạn muốn thực sự gọi ra để Ruby, bạn có thể sử dụng một mẫu inline ERB:

$hostname_without_number = inline_template('<%= hostname.gsub(/\d+$/, "") %>') 
+1

Cảm ơn! Tôi sẽ sử dụng regsubst() trong thời gian này, nhưng tôi rất vui khi biết về inline_template! Điều đó rất linh hoạt. – richardkmiller

+0

Điều đáng nói là 'regsubst()' cũng hỗ trợ cờ arg ở vị trí thứ 4. Một cờ như 'G' sẽ thay thế toàn bộ tất cả các kết quả phù hợp trong chuỗi được cung cấp. – killthrush

2

Trong trang này:

https://blog.kumina.nl/2010/03/puppet-tipstricks-testing-your-regsubst-replacings-2/comment-page-1/#comment-1727

nó là khá tốt giải thích và có một thủ thuật tuyệt vời để kiểm tra các biểu thức chính quy của bạn với irb.

Có liên kết này và câu trả lời của freiheit Tôi có thể giải quyết vấn đề của mình bằng cách thay thế '\' cho '/'.

$ programfiles_sinbackslash = regsubst ($ env_programfiles, '\', '/', 'G')

Các vấn đề liên quan