0

我有一大串从各种来源编译而来的单词。来自这么多不相关的来源,我想有一些重复。即使在一些原始文件中,也有重复。我创建了一个脚本来对它们进行排序,但是此时文件变得如此笨拙,以至于我在尝试解析它时内存不足。来源如下。我正在使用 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
4

1 回答 1

2

有许多不同的方法可以删除重复项。您不需要在 ruby​​ 中这样做。如果单词适合记忆,您可以使用一组您看过一次的单词,而无需再次打印。如果集合太大,您总是可以使用sort命令在 ruby​​ 之外对文件进行排序(查看 -T 开关以使用临时目录而不是内存),并将输出通过管道传输到uniq -c.

于 2012-12-30T19:52:27.143 回答