-1

2 つのテキスト ファイルがあり、それぞれに 50,000 行以上が含まれています。両方のテキスト ファイルにある同じ単語を見つける必要があります。COMM コマンドを試してみましたが、「ファイル 2 はソートされていません」という回答が得られました。コマンド SORT でファイルをソートしようとしましたが、うまくいきません。私は Windows で作業しています。コマンドラインで解決する必要はありません。いくつかのプログラムまたは他の何かで解決できます。いつもアイデアありがとうございます。

4

2 に答える 2

0

ファイルをソートしたい場合は、何らかの外部ソート (マージソートなど) を使用して、十分なメモリを確保する必要があります。別の方法として、最初のファイルを調べてすべての単語を見つけてハッシュテーブルに保存し、次に 2 番目のファイルを調べて単語の繰り返しをチェックすることができます。単語が実際の単語で意味不明でない場合は、2 番目の方法が機能し、より簡単になります。ファイルが非常に大きいため、スクリプト言語を使用したくない場合がありますが、機能する場合があります。

于 2013-05-04T22:02:37.000 に答える
0

単語が独自の行にない場合、comm は役に立ちません。

Cygwinのような便利なUNIXユーティリティのセットがある場合(commについて言及したので、他のユーティリティもあるかもしれません)、次のことができます:

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

最初の 2 行は、各ファイル内の単語を各行の 1 つの単語に変換し、ファイルを並べ替えます。

個々の単語のみに関心がある場合は、に変更sortsort -uて固有のセットを取得できます。

于 2013-05-04T22:07:07.040 に答える