オプションでgrep

オプションでgrep

私が使用しているbashのインジケータが1000以上含まれているファイルがあります。

for desig in $(desfile)
do
  grep $desig in listfile
done

リストファイルは100万行を超える行ごとに含めることができるため、速度が重要です。

問題はこのような指標にあります。

PA0EHH
DL/PA0EHH

PA0EHH2回見つかった

私は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コマンドの出力)を複数の小さなファイルに分割し、そのファイルを繰り返すことができます。何があってもあなたはそうですdesfilesplitいいえgrep各パターンごとに一度呼び出したいです!

おすすめ記事