如何在Ruby中有效地迭代和更新大字符串?

时间:2017-03-02 20:16:09

标签: ruby file

我有一个6GB的文本文件。我想做点什么:

str.gsub!('xxx', 'x')

想法是使用搜索读取1MB块。有没有办法更有效地进行上述替换?也许使用类似C的数组访问来迭代字符串?

2 个答案:

答案 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

这将具有非常低的内存占用,并且应该相当快。