Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 在两个文本文件中查找相同的单词_Sorting_Text_Comm - Fatal编程技术网

Sorting 在两个文本文件中查找相同的单词

Sorting 在两个文本文件中查找相同的单词,sorting,text,comm,Sorting,Text,Comm,我有两个文本文件,每个文件包含50000多行。我需要找到两个文本文件中的相同单词。我尝试了COMM命令,但得到的答案是“文件2未按顺序排序”。我试图按命令排序文件,但它不起作用。我在窗户里工作。它不必在命令行中解决。它可以在一些程序或其他程序中解决。谢谢你的每一个想法。如果你想对文件进行排序,你必须使用某种外部排序(如合并排序),这样你才有足够的内存。至于另一种方法,您可以遍历第一个文件,找到所有单词并将它们存储在哈希表中,然后遍历第二个文件并检查重复的单词。如果单词是真实的单词,而不是胡言乱语

我有两个文本文件,每个文件包含50000多行。我需要找到两个文本文件中的相同单词。我尝试了COMM命令,但得到的答案是“文件2未按顺序排序”。我试图按命令排序文件,但它不起作用。我在窗户里工作。它不必在命令行中解决。它可以在一些程序或其他程序中解决。谢谢你的每一个想法。

如果你想对文件进行排序,你必须使用某种外部排序(如合并排序),这样你才有足够的内存。至于另一种方法,您可以遍历第一个文件,找到所有单词并将它们存储在哈希表中,然后遍历第二个文件并检查重复的单词。如果单词是真实的单词,而不是胡言乱语,那么第二种方法会更有效、更简单。由于文件太大,您可能不想使用脚本语言,但它可能会工作。

如果单词不在自己的行中,则comm无法帮助您

如果您手边有一组unix实用程序,如Cygwin(您提到了comm,所以您可能还有其他实用程序),则可以执行以下操作:

$ tr -cs "[:alpha:]" "\n" < firstFile | sort > firstFileWords
$ tr -cs "[:alpha:]" "\n" < secondFile | sort > secondFileWords
$ comm -12 firstFileWords secondFileWords > commonWords
$tr-cs“[:alpha:][\n”firstFileWords
$tr-cs“[:alpha:][\n”secondFileWords
$comm-12第一个文件字第二个文件字>常用字
前两行将每个文件中的单词转换为每行上的单个单词,它还对文件进行排序


如果您只对单个单词感兴趣,可以将
sort
更改为
sort-u
,以获得唯一的集合。

详细介绍一下您的文本。每行一个字?还是CSV?还是怎样给出一些示例,例如goodFirst文本文件每行包含一个带字符#、&或*的单词。第二个文件包含一个单词,每行包含一个数字。50k行不是很大。如果一条线的长度正常。不管你说什么,Kent,因为他提到了文件中的行数,我想这对他来说可能是个问题,仅此而已