2016-04-19 13 views
-3

私のファイルは次のとおりです。 ルビーの文字列でパターンを見つけて置換する方法は?

 
    [[email protected] etc]# cat nrpe.cfg
command[check_users]=/usr/local/nagios/libexec/check_users -w 30 -c 35 command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 command[check_hda]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sdb command[check_procs]=/usr/local/nagios/libexec/check_procs -w 200 -c 250
私はあなたがラインでの発生数に応じて gsubまたは subを使用することができますルビー

答えて

0

まずはファイルにテキストを書いてみましょう:

str =<<BITTER_END 
command[check_users]=/usr/local/nagios/libexec/check_users -w 30 -c 35 
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 
command[check_hda]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sdb 
command[check_procs]=/usr/local/nagios/libexec/check_procs -w 200 -c 250 
BITTER_END 

Fname_in = "in" 
Fname_out = "out" 

File.write(Fname_in, str) 
    #=> 390 

さて、文字列にそのファイルを読み込む文字列を変更し、出力ファイルに書き込む:

File.write(Fname_out, File.read(Fname_in).gsub("/dev/sdb", "/dev/xvda1")) 
    #=> 392 

はのは、それが働い確認してみましょう:

puts File.read(Fname_out) 
command[check_users]=/usr/local/nagios/libexec/check_users -w 30 -c 35 
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 
command[check_hda]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/xvda1 
command[check_procs]=/usr/local/nagios/libexec/check_procs -w 200 -c 250 
0

は/ dev/xvda1は/ dev/sdbとを交換したい:

File.open("/your/file", "r") { |file| file.each_line { |line| 
puts line.gsub("/dev/sdb", "/dev/xvda1") 
}} 
line = "command[check_hda]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sdb" 
line.gsub("/dev/sdb", "/dev/xvda1") 
#=> "command[check_hda]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/xvda1" 

そのファイル内にあるので、あなたはとして反復処理することができます

+0

'gsub'と' sub'の違いは何ですか? –

+0

'gsub'はパターンのすべての出現を置き換え、' sub'は最初のオカレンスのみを置き換えます。私は私の答えでリンクを提供している、ドキュメントをご覧ください。 – shivam

関連する問題