Reputation: 10376
So I have the following code that reads a text file line by line. Each line ends with a return carriage. The code below outputs the following:
define host {
use servers
host_name ["buffy"]
alias ["buffy"]
address ["buffy"].mydomain.com
}
How do i get rid of the bracket and quotes?
File.open('hosts','r') do |f1|
while line = f1.gets
data = line.chomp.split("\n")
File.open("nagios_hosts.cfg", "a") do |f|
f.puts "define host {\n";
f.puts "\tuse servers\n"
f.puts "\thost_name #{data}"
f.puts "\talias #{data}"
f.puts "\taddress #{data}.mydomain.com"
f.puts "\t}\n\n"
end
end
end
Upvotes: 6
Views: 15684
Reputation: 13415
If your file is the following
server1
server2
And you want to produce a file like this :
define host {
use servers
host_name server1
alias server1
address server1.mydomain.com
}
define host {
use servers
host_name server2
alias server2
address server2.mydomain.com
}
I would do something like :
output = File.open("output", "w")
File.open("hosts").each_line do |line|
server_name = line.strip
text = <<EOF
define host {
use servers
host_name #{server_name}
alias #{server_name}
address #{server_name}.mydomain.com
}
EOF
output << text
end
output.close
Upvotes: 0
Reputation: 13415
You could Use
#{data[0]}
instead of #{data}
That's because split creates an array of strings.
However, if you really want to simply get the line without the trailing end of line, you can use the strip method.
Upvotes: 6