grep -v -f 速度を上げる方法はありますか?

grep -v -f 速度を上げる方法はありますか?

ファイルが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

ただし、ファイル全体をメモリにロードすることに注意してください。

おすすめ記事