所以我有以下代码逐行读取文本文件。 每条线以回车架结束。以下代码输出以下内容:
define host {
use servers
host_name ["buffy"]
alias ["buffy"]
address ["buffy"].mydomain.com
}
如何摆脱括号和引号?
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
答案 0 :(得分:5)
你可以使用
#{data[0]}
而不是#{data}
那是因为split会创建一个字符串数组。
但是,如果你真的想简单地得到没有尾随行的行,你可以使用strip方法。
答案 1 :(得分:0)
#{data[0]}
split
返回一个数组。
答案 2 :(得分:0)
如果您的文件如下
server1
server2
你想生成这样的文件:
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
}
我会做类似的事情:
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