我正在尝试使用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"
它有效 - 但是输出文件中的行都是一样的,只是重复第一个正则表达式匹配的结果。
我做错了什么?
答案 0 :(得分:2)
您正在迭代整个文件。你需要迭代这条线。
fileIn.each_line do |line|
dataLine = line.match(/^\sData:(.+)/).captures
fileOut.write dataLine
end