检查超过2GB的文件中的重复项

时间:2012-12-30 19:33:24

标签: ruby list parsing memory memory-management

我有一个从各种来源编译的大量单词。来自这么多不相关的来源,我想有一些重复。即使在一些原始文件中,也有重复文件。我已经创建了一个脚本来对它们进行排序,但是此时文件已经变得如此笨拙,以至于我在尝试解析它时会耗尽内存。来源如下。我使用Ruby 1.9.3-p327运行Windows 8,64位。

#!/usr/bin/env ruby

words = []
File.foreach( "wordlist.txt" ) do |line|
    words << line
end
words.uniq!()
words = words.sort()

wordFile = File.open( "wordlist.txt", "w" )

words.each do |word|
    wordFile << word + "\n"
    puts "Wrote to file: #{ word }"
end

1 个答案:

答案 0 :(得分:2)

有许多不同的方法可以删除重复项。你不需要在ruby中执行此操作。如果单词适合记忆,你可以使用你曾经见过的一组单词,而不是再次打印它们。如果集合太大,您始终可以使用sort命令对ruby之外的文件进行排序(查看-T开关以使用临时目录而不是内存),并将输出传递给{{1} }。