2010-09-21 3 views
0

У меня есть следующий код:рубин выход вопрос

File.open("/log/#{hostname}-#{@tdate}-errors.txt",'w') do |o| 
    run=tn.cmd('String'=>'sh int', 'Match'=>/#/) { |c| puts c} 
    run.each_line do |re| 
    title = re.match /([\S]+)Ethernet\S+/ 
    rep = re.match /\d+ input errors/ 
    #o.puts run 
    o.puts title 
    o.puts rep 
    end 
end 
tn.close 

Он пишет в файл просто отлично, но добавляет кучу пробелов между заголовком и респ. Как мне избавиться от пробелов?

+0

Что такое 'tn'? Образец выглядит неполным. –

+0

То, где я устанавливаю telnet-соединение – nomoreflash

+0

Как выглядит типичный вывод команды 'telnet'? –

ответ

0

Вы можете попробовать rstrip удалить конечные пробелы http://ruby-doc.org/core/classes/String.html#M000822

+0

не уверен, как использовать rstrip с кодом, который у меня выше. Какие-либо предложения? – nomoreflash

+0

Файл выглядит так: GigabitEthernet3/1 0 ошибки ввода с многопутными пустыми линиями между ошибками ввода GigabitEthernet3/1 и 0 – nomoreflash

+0

'puts' добавит новую строку в конце строки. Я рекомендовал бы делать что-то вроде 'o.print title.rstrip + rep.rstrip' – deadkarma

0

Я думаю, что вы действительно хотите сделать что-то вроде этого:

File.open("/log/#{hostname}-#{@tdate}-errors.txt",'w') do |o| 
    run = tn.cmd('String'=>'sh int', 'Match'=>/#/) { |c| puts c} 
    title = nil 
    error_count = nil 
    run.each_line do |line| 
    title = $1 if line =~/(\S+Ethernet\S+)/ 
    error_count = Integer($1) if line =~ /(\d+) input errors/ 
    end 
    title ||= 'no title' 
    error_count ||= 0 
    o.puts title 
    o.puts error_count 
end 
tn.close 
+0

файл выглядит следующим образом: GigabitEthernet3/1 0 ошибок ввода с пустыми строками кратной между GigabitEthernet3/1 и 0 ошибок ввода – nomoreflash

Смежные вопросы