使用Ruby和RegEx从大型日志文件中恢复十六进制数据

时间:2013-06-05 09:39:52

标签: ruby regex

我正在尝试使用Ruby和RegEx从大型日志文件中过滤/追加十六进制数据行。

我需要的日志文件的行如下所示:

Data: 10 55 61 (+ lots more hex data)

我想添加所有十六进制数据,以便稍后进行进一步处理。正则表达式/^\sData:(.+)/应该可以解决问题。

我的Ruby程序看起来像这样:

puts "Start"

fileIn = File.read("inputfile.txt")

fileOut = File.new("outputfile.txt", "w+")
fileOut.puts "Start of regex data\n"    

fileIn.each_line do
    dataLine = fileIn.match(/^\sData:(.+)/).captures    
    fileOut.write dataLine
end

fileOut.puts "\nEOF"
fileOut.close

puts "End"

它有效 - 但是输出文件中的行都是一样的,只是重复第一个正则表达式匹配的结果。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您正在迭代整个文件。你需要迭代这条线。

fileIn.each_line do |line|
    dataLine = line.match(/^\sData:(.+)/).captures    
    fileOut.write dataLine
end