Как отобразить переменную внутри строки с помощью Ruby - PullRequest
5 голосов
/ 22 декабря 2009

Итак, у меня есть следующий код, который читает текстовый файл построчно. Каждая строка заканчивается возвратной кареткой. Код ниже выводит следующее:

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 ]

5 голосов
/ 22 декабря 2009

Вы можете использовать

#{data[0]}

вместо # {data}

Это потому, что split создает массив строк.

Однако, если вы действительно хотите просто получить строку без конечного конца строки, вы можете использовать метод полосы.

0 голосов
/ 22 декабря 2009

Если ваш файл следующий

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
0 голосов
/ 22 декабря 2009
#{data[0]}

split возвращает массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...