2016-05-13 2 views
0

複数の大きなファイルを重複排除します。問題は、これらのリストは非常に長く(合計50億レコード)、私は各リストをユニークにする問題があるということです。私はファイル名を保持したいと思いますが、同時に、すべてのファイルにユニークなエントリを持っています(マージせずに)。私は単語を含む少なくとも500個の異なるファイル(別の行の各単語)を有する

は、これまでのところ私は運がなくて、テーブル内で一意の列(PostgreSQLとSQLiteの)とapp.mergeとCCR、DBなどのさまざまなプログラムを試してみました。信頼できる解決策が見つからない。あなたの提案は何でしょうか?

EDIT:ファイルが一般的な単語を持つことを防止しようとしています。 (これを取る自体ははるかに大きいですもちろんファイル

f1: 
word1 
other 
something 

f2: 
word2 

f3: 
myentry 

を:私は見ることを期待したい結果

f1: 
word1 
other 
something 

f2: 
word2 
word1 
other 

f3: 
word1 
something 
myentry 

:より良いそれを説明するには、のは、私は以下の内容を含む、3つのファイルを持っているとしましょう1つは例として:http://md5decrypt.net/Telecharger-wordlist/Md5decrypt-awesome-wordlist.7z)。 - 「私はこれまでのテスト何の質問に答えるためにも、ここで私は今働いている私のコードです:https://pastebin.com/Y8HutakUを、ここ(ランニングの1時間後に停止)の結果である:https://pastebin.com/tknve7qA。私はコードが最適ではないことを知っています.DBが次第に増えていくにつれ、DBへ​​の次の挿入に時間がかかります。私はそれが(私はなどを比較して、別のワードリストをダウンロードした場合)のファイル名を保存し、将来の使用のための比較です方法を持っている、ユニークなすべての単語を持つための良い解決策になると思うので、私は、DBを試しています。プラスSQLiteのパフォーマンスについての良いwriteupsがあります:あなたがLinuxシステム上なら

+0

2つのファイルに共通の単語が含まれないようにするか、各ファイルの単語がそのファイル内で一意であることを確認しようとしていますか?後者の場合、ファイルの数や単語の総数は何故問題なのですか?また、他のソリューションには何が問題になりましたか? –

+0

私は、どのファイルにも共通の単語が含まれないようにしようとしています。 – zerocool

+0

各ファイル内のすべての単語はすでにユニークなので、合計いくつの異なる単語があなたにあると思いますか? –

答えて

0

、あなただけの標準のコマンドラインツールを使用することができます。

for file in /path/to/files/* 
do 
    echo "`sort -u $file`" > $file 
done 
+0

これで問題は解決しません。私が上記のコメントで言ったように、私はどんなファイルにも共通の言葉がないようにしようとしています。アイデアの後、私は 'uniq -d'を使用して、すべての重複を1つのファイルに保存し、そのファイルを重複除外の参照として使用する必要があります。しかし、これは完了するまでに時間がかかります(すでに試してみました)。そのディレクトリにファイルを2つ追加すると、それを信頼できる解決方法と呼ぶのは難しいです(全体のプロセスを再開する必要があります)。 – zerocool

+0

それは、あなたが私が投稿した解決策である「すべてのファイルに一意のエントリー」を求めたと述べています。 – vesche

+0

OK、投稿を編集しました。これを指摘してくれてありがとう。 – zerocool

関連する問題