我有两个文本文件,每个文件包含超过50 000行。我需要找到两个文本文件中的相同单词。我试过COMM命令,但我得到了答案“文件2不按排序顺序”。我尝试按命令SORT对文件进行排序,但它不起作用。我在Windows工作。它不必在命令行中解决。它可以在某些程序或其他东西中解决。谢谢你的每一个想法。
答案 0 :(得分:0)
如果要对文件进行排序,则必须使用某种外部排序(如合并排序),这样就有足够的内存。至于另一种方式,你可以浏览第一个文件并查找所有单词并将它们存储在哈希表中,然后浏览第二个文件并检查重复的单词。如果单词是实际单词而不是乱码,那么第二种方法将起作用并且更容易。由于文件太大,您可能不想使用脚本语言,但它可能有用。
答案 1 :(得分: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
以获取唯一字词。