2017-09-05 13 views
0

我正在尝试编写一个简单的ruby脚本来解析某些设备配置。 我正在逐行读取txt文件的配置,如果遇到匹配,我想将行读入array,并将array粘贴到输出文件。Ruby - 数组问题 - 来自文件的行

if $match == 1 

my_array.insert($j,/#{line}/) 

$j += 1 


somefile_log.puts ("DEBUG : Array at #{$j} is #{my_array[$j]}") 

我搞乱了索引方面。 **J**增量,但array值与它读取的第一行保持不变。想法?

+1

你的代码中的注释不会运行的建议。 – Max

+1

使用像'$ j'和'$ match'这样的全局变量是一个非常糟糕的习惯。这些不像PHP,其中'$ x'对函数是本地的,这些是程序范围的,在根级别,这意味着'$ j'的所有实例是相同的。 – tadman

回答

0

这是一个完整的混乱。在Ruby中,我们会做下列方式:

match = /TEST/ # no need for global variables 

result = File.readlines('/foo/bar/file.name').select do |line| 
    line =~ match 
end 

result.each_with_index do |line, idx| 
    somefile_log.puts "DEBUG : Array at #{idx} is #{line}" 
end 

,或者甚至更好,

File.readlines.grep(match) 

在由约尔格W.米塔格

+1

'File.readlines.grep(match)'? –

+0

的确,谢谢,更新了一个答案。 – mudasobwa