如何使用Ruby在字符串中显示变量

时间:2009-12-22 17:49:55

标签: ruby

所以我有以下代码逐行读取文本文件。 每条线以回车架结束。以下代码输出以下内容:

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

3 个答案:

答案 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