大きなテキストリストから重複したアイテムを削除する

大きなテキストリストから重複したアイテムを削除する

私はこれをインターネットと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を使用してテストしたところ、sort5GiBファイルの並べ替えに問題はありませんでした。だから、あなたはそれをインストールしようとすることができます。

しかし、覚えておくべきこと:

  • sort -u一意の行は提供されていませんが、すべての行の1つが等しくソートされています。具体的には、GNUシステムと一般的なロケールでは、複数の文字が等しく並べられています。バイトレベルで一意の行が必要な場合はを使用してくださいLC_ALL=C sort -u
  • sortメモリ全体をすべて使用したくない場合は、大規模入力に一時ファイルを使用してチャンクで並べ替えます。一時ディレクトリに十分なスペースがないと(通常/tmp設定されていない限り$TMPDIR)失敗します。十分な空き領域があるディレクトリに設定してください(GNUオプション$TMPDIRを参照)。-Tsort

おすすめ記事