0
大きなファイルの単純な解析を実行します。 大きなテキストファイルからブロックを選択し、これらのブロックを新しいテキストファイルに書き込もうとしています。私の現在のメソッドは非常にゆっくりと動作します。たとえば :解析のための ファイル:単純な大きなファイルの高速解析
1test
1111
2222
3333
4444
1test
5555
6666
2test
5555
4444
3test
0000
4test
9999
0000
5test
3333
3333
8test
2222
9test
6666
11test
1111
私は新しいファイル内ら次のデータたい:まもなくで
1test
1111
2222
3333
4444
1test
5555
6666
2test
5555
4444
3test
0000
4test
9999
0000
5test
3333
3333
、私はソースファイルから特定のブロックを選択しようとしています。
マイコード:
arr = []
data = File.read("/path/to/file")
blocks = ['1test','2test','3test','4test','5test']
blocks.each do |block|
want = data.match(/#{block}(.*)#{block}/m)[0]
want.each_line do |line|
arr << line
File.open("/path/to/result/file", 'w') { |file| file.write("#{res.join}") }
end
end
私は私の問題は、私は何度も「欲しい」のデータを読むことだと思います。 「必要な」データの1回のパスで結果ファイルに書き込む方法はありますか?