我有一个6GB的文本文件。我想做点什么:
str.gsub!('xxx', 'x')
想法是使用搜索读取1MB块。有没有办法更有效地进行上述替换?也许使用类似C的数组访问来迭代字符串?
答案 0 :(得分:3)
您可以使用sed
进行子进程,这将非常快:
`sed -i -E 's:xxx:x:g' file_name`
答案 1 :(得分:2)
如果巨大的文件超过20行,你可以使用:
File.open('new_file', 'w') do |out|
File.foreach('huge_file.txt') do |line|
out.puts line.gsub('xxx', 'x')
end
end
这将具有非常低的内存占用,并且应该相当快。