私の問題は次のようになりますこの問題しかし、いくつかの他の制限があります。
\n
1行に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
これは、マニュアルページよりもソートを徹底的に説明します。