私はこれをインターネットとstackexchangeで検索しました。同様のトピックがたくさんありますが、まだ解決策が見つかりませんでした。
したがって、約5%の重複行があるかなり大きなリスト(約20GB)があります。重複したエントリの1つが削除されるように、このリストをフィルタリングしたいと思います。例:
入力する:
test123
Test123
test
test123
test 123
出力:
test123
Test123
test
test 123
リストがソートされたかどうかは重要ではありません。
私もsort -u -o output.txt
それを試しましたsort -us -o output.txt
。小さなファイルにはうまく機能しますが、約より大きいファイルを処理しようとすると、4 GBの場合、結果ファイルは疑わしいほど小さくなり、.txtファイルの代わりに「emacs-lisp-source-text」になります。
誰でも私を助けることができればとても感謝します!
ベストアンサー1
GNU coreutils 8.26でGNUを使用してテストしたところ、sort
5GiBファイルの並べ替えに問題はありませんでした。だから、あなたはそれをインストールしようとすることができます。
しかし、覚えておくべきこと:
sort -u
一意の行は提供されていませんが、すべての行の1つが等しくソートされています。具体的には、GNUシステムと一般的なロケールでは、複数の文字が等しく並べられています。バイトレベルで一意の行が必要な場合はを使用してくださいLC_ALL=C sort -u
。sort
メモリ全体をすべて使用したくない場合は、大規模入力に一時ファイルを使用してチャンクで並べ替えます。一時ディレクトリに十分なスペースがないと(通常/tmp
設定されていない限り$TMPDIR
)失敗します。十分な空き領域があるディレクトリに設定してください(GNUオプション$TMPDIR
を参照)。-T
sort