私の巨大な(最大2 GiB)テキストファイルには、その中のすべての行の約100の正確な複製が含まれています(ファイルはCSVのようなデータテーブルであるため、私の場合は役に立ちません)。
私が必要なのは、元のシーケンスの順序を維持しながら、すべての繰り返しを削除することです(ただし、これはパフォーマンスを大幅に向上させるために犠牲にすることができます)。結果では、各行は一意である必要があります。等しい行が100行ある場合(通常、重複はファイル全体に広がり、隣人にはなりません)、残された種類は1つだけです。
これを実装するためのプログラムをScalaで作成しました(Scalaを知らない場合はJavaを検討してください)。しかし、おそらくこれをより高速に実行できる、より高速なCで作成されたネイティブツールがあるのでしょうか。
更新:awk '!seen[$0]++' filename
ファイルが2 GiB以下に近い限り、解決策はうまく機能しているように見えましたが、8 GiBファイルをクリーンアップしようとしても機能しなくなりました。4 GiB RAMを搭載したMacと4 GiB RAMおよび6 GiBスワップを搭載した64ビットWindows 7 PCで無限に実行されているように見えます。そして、この経験を考えると、4 GiB RAMを搭載したLinuxで試してみることに熱心ではありません。
sort -u
おそらくより高速になります。