0

我正在尝试使用 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"

它可以工作 - 有点 - 但输出文件中的行都是相同的,只是重复第一个正则表达式匹配的结果。

我究竟做错了什么?

4

1 回答 1

2

您正在迭代同一个整个文件。您需要遍历该行。

fileIn.each_line do |line|
    dataLine = line.match(/^\sData:(.+)/).captures    
    fileOut.write dataLine
end
于 2013-06-05T09:48:46.573 回答