大容量GBテキストファイルから重複行を削除するには?

大容量GBテキストファイルから重複行を削除するには?

私の問題は次のようになりますこの問題しかし、いくつかの他の制限があります。

  • \n1行に1単語ずつ区切られた単語のリストがたくさんあります。ファイルサイズは2GBから最大10GBまでです。
  • 重複した行を削除する必要があります。
  • プロセスは重複項目の削除中にリストをソートできますが、必須ではありません。
  • 出力の新しい一意の単語のリストを保持するのに十分なスペースがパーティションにあります。

両方の方法を試しましたが、どちらもメモリ不足エラーのため失敗しました。

sort -u wordlist.lst > wordlist_unique.lst
awk '!seen[$0]++' wordlist.lst > wordlist_unique.lst
awk: (FILENAME=wordlist.lst FNR=43601815) fatal: assoc_lookup: bucket-ahname_str: can't allocate 10 bytes of memory (Cannot allocate memory)

他のどのような方法を試すことができますか?

ベストアンサー1

-o--output=FILE出力をリダイレクトするのではなく、/オプションを使用してソートを試してください。 /buffer-size-S設定してみることもできます--buffer-size=SIZE。また、-s/を試してください--stable。マニュアルページを読むと、私が提供したすべての情報が表示されます。

現在実行中の操作に適している完全なコマンドは次のとおりです。

sort -us -o wordlist_unique.lst wordlist.lst

次のURLを読むこともできます。

http://www.gnu.org/s/coreutils/manual/html_node/sort-inspiration.html

これは、マニュアルページよりもソートを徹底的に説明します。

おすすめ記事