0

Ruby と RegEx を使用して、大きなログ ファイルから 16 進データの行をフィルター処理/追加しようとしています。

必要なログ ファイルの行は次のようになります。

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

後でさらに処理するために、すべての 16 進データを追加したいと考えています。正規表現 /^\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 に答える