BASHの外部ファイルgrep -f {patternfile} {source}で一致するパターンを見つけるより速い方法

BASHの外部ファイルgrep -f {patternfile} {source}で一致するパターンを見つけるより速い方法

*nix 端末 (Bash) オペレーティング・システムでは、以下を使用するよりもパターンを検索する (または除外 - egrep -v オプション) より高速な方法があります。

grep -f {patternfile} {source}

大きなファイルの場合、このオプションを使用すると非常に遅くなります。

答え1

パターンが固定文字列の場合は、以下を見てください。タイトな捕獲ダウンロード)(またはWu-Manberアルゴリズムに基づく他の一致者)。すべてのパターンを並列に一致させます。

Wu-Manberは通常、最大数十万のパターン(一度に100万のプッシュ)を処理します。

正規表現の場合、普遍的に速い方法はないと思います。

答え2

検索しているファイルの種類を指定していませんが、私が見た検索用の他のツールはより良いパフォーマンスを提供する可能性があります。ack

ただし、パターンファイルを利用した検索機能は提供しません。ただし、このアプローチでは、ack次のように複数のパターンの検索を案内できます。

  $ grep -Ffx <(ack -l "pattern1" file) <(ack -l "pattern2" file)

これをより多様にするために、Bashスクリプトに簡単に配置できます。

関連情報