我有两个文本文件,每个文件包含超过 50 000 行。我需要在两个文本文件中找到相同的单词。我尝试了 COMM 命令,但得到的答案是“文件 2 未按排序顺序”。我试图通过命令 SORT 对文件进行排序,但它不起作用。我在 Windows 中工作。它不必在命令行中解决。它可以在一些程序或其他东西中解决。谢谢你的每一个想法。
问问题
1120 次
2 回答
0
如果要对文件进行排序,则必须使用某种外部排序(例如合并排序),以便有足够的内存。至于另一种方法,您可以浏览第一个文件并找到所有单词并将它们存储在哈希表中,然后浏览第二个文件并检查重复的单词。如果单词是实际单词而不是胡言乱语,则第二种方法将起作用并且更容易。由于文件太大,您可能不想使用脚本语言,但它可能会起作用。
于 2013-05-04T22:02:37.000 回答
0
如果自己的话不上线,那么comm帮不了你。
如果你有一套方便的 unix 实用程序,比如 Cygwin,(你提到了 comm,所以你可能还有其他的)你可以这样做:
$ tr -cs "[:alpha:]" "\n" < firstFile | sort > firstFileWords
$ tr -cs "[:alpha:]" "\n" < secondFile | sort > secondFileWords
$ comm -12 firstFileWords secondFileWords > commonWords
前两行将每个文件中的单词转换为每行的一个单词,它还对文件进行排序。
如果您只对单个单词感兴趣,您可以更改sort
为sort -u
获取唯一的集合。
于 2013-05-04T22:07:07.040 回答