私が使用しているbashのインジケータが1000以上含まれているファイルがあります。
for desig in $(desfile)
do
grep $desig in listfile
done
リストファイルは100万行を超える行ごとに含めることができるため、速度が重要です。
問題はこのような指標にあります。
PA0EHH
DL/PA0EHH
PA0EHH
2回見つかった
私はawkがより選択的かもしれませんが、痛みを伴うほど遅いことを発見しました。
ベストアンサー1
grep -xF -f desfile listfile
desfile
またはコマンドの場合、
grep -xF -f <(desfile) listfile
または、
desfile | grep -xF -f /dev/stdin listfile
ここで使用されるオプションは
-x
、行の全長にわたって一致する必要があります。これは、行の部分文字列を一致させないために使用したいものです。-F
、正規表現の一致ではなく文字列比較を使用します。これはクエリを高速化し、パターンに正規表現に特殊文字が含まれている場合(そして特殊文字が望ましくない場合)に必要です。-f filename
、コマンドラインの文字列以外のファイルからパターンを読み込みます。これは適度に機能します。多い場合たくさんモードではメモリが不足する可能性があります。この場合、分割(またはdesfile
コマンドの出力)を複数の小さなファイルに分割し、そのファイルを繰り返すことができます。何があってもあなたはそうですdesfile
split
いいえgrep
各パターンごとに一度呼び出したいです!