2013-05-04 114 views
-1

我有兩個文本文件,每個文件包含超過50 000行。我需要找到兩個文本文件中的相同單詞。我嘗試COMM命令,但我得到的答案是「文件2不是按排序順序」。我試圖通過命令SORT對文件進行排序,但它不起作用。我在Windows上工作。它不必在命令行中解決。它可以在一些程序或其他東西中解決。感謝您的每一個想法。在兩個文本文件中查找相同的單詞

+1

告訴你更多關於你的文字。每行一個字?或CSV?或者是什麼?舉一些例子會很好 – Kent 2013-05-04 22:03:48

+0

第一個文本文件包含一個單詞,每行包含字符#,&或*。第二個文件包含一個單詞和每行數字。 – user1844845 2013-05-04 22:10:54

回答

0

如果您想排序文件,您將不得不使用某種外部排序(如合併排序),以便您擁有足夠的內存。至於另一種方式,你可以通過第一個文件並找到所有單詞並將它們存儲在散列表中,然後檢查第二個文件並檢查重複的單詞。如果這些單詞是真實的單詞而不是亂碼,那麼第二種方法將起作用並且更容易。由於文件太大,你可能不想使用腳本語言,但它可能工作。

+1

50k線並不大。如果一條線的長度正常。在內存中進行處理也可以。 – Kent 2013-05-04 22:12:12

+0

無論你說什麼肯特,因爲他提到了文件中的行數,我認爲這可能是他的問題,這就是所有 – aaronman 2013-05-04 22:13:59

0

如果單詞不在自己的行,那麼comm不能幫你。

如果你有一組UNIX工具得心應手,像Cygwin的,(你提到的通訊,所以你可能有其他人也),你可以這樣做:

$ tr -cs "[:alpha:]" "\n" < firstFile | sort > firstFileWords 
$ tr -cs "[:alpha:]" "\n" < secondFile | sort > secondFileWords 
$ comm -12 firstFileWords secondFileWords > commonWords 

前兩行轉換詞語每個文件在每一行中包含一個單詞,並對文件進行排序。

如果你只在個別詞有興趣,你可以改變sortsort -u使獲得獨特的一套。

相關問題