ファイルが2つあり、Aには600万の行があり、Bには500万の行があります。 Aから行を取得しようとしましたが、Bから欠落していますが、grep -v -f B A
非常に遅い速度です。スピードを上げる方法はありますか?
ベストアンサー1
両方のファイルがすでにソートされている場合(現在のファイルと同じロケール)、このコマンドを使用してください。
comm -23 A.txt B.txt
ソートされておらず、シェルがkshスタイルのプロセス置換をサポートしている場合:
(export LC_ALL=C; comm -23 <(sort A.txt) <(sort B.txt))
(LC_ALL=C
決定的(そして高速)ソート順序を取得します。)
ファイルのソートが不要なcombine
ユーティリティも参照してください。moreutils
combine A.txt not B.txt
ただし、ファイル全体をメモリにロードすることに注意してください。