Ripgrepは、シルバーサーチャーの有用性とGNUgrepの速度を組み合わせたライン指向の検索ツールです。 これは、デフォルトで非表示ファイルとバイナリファイルを無視して、現在のディレクトリパスで正規表現パターンを再帰的に検索することで機能します。 現在、Windows、Mac OS、およびLinuxでサポートされており、新しいものごとにバイナリダウンロードが利用可能です。 リリース。
grep、awk、sedよりも高速です。 デフォルトでは、バイナリファイルと隠しファイルを無視します。 grepと同様に、特定のタイプのファイルを検索したり、他のファイルを明示的に無視したりできます。 ネイティブでは、UTFおよびUnicodeサポート以外のテキストエンコーディングをサポートします。 Ripgrepの速度は、Rustの正規表現エンジンに由来します。このエンジンから、有限オートマトン、SIMD、およびその他の積極的なリテラル最適化を使用して構築され、高速検索を実現します。 また、中間バッファを使用したメモリマップでの検索もサポートしているため、単一のファイルや大きなディレクトリに適しています。
Ripgrepをインストールする方法
のバイナリ名 ripgrep は rg。 Linuxバイナリは静的実行可能ファイルですが、WindowsバイナリはMinGW(GNU)またはMicrosoft Visual C ++(MSVC)で構築されています。
の上 Mac OSX自作 次のように、homebrew-coreからインストールできます。
$ brew install ripgrep
または、カスタムタップを利用して、毎晩rustでコンパイルされたバイナリ(SIMDとすべての最適化を含む)をインストールできます。
$ brew tap burntsushi/ripgrep https://github.com/BurntSushi/ripgrep.git
$ brew install burntsushi/ripgrep/ripgrep-bin
Windows Chocolateyユーザーの場合は、インストールできます から 公式レポ。
$ choco install ripgrep
あなたが Arch Linux ユーザーの場合、公式リポジトリからインストールできます。
$ pacman -S ripgrep
あなたが Gentoo ユーザー、あなたはからインストールすることができます 公式レポ。
$ emerge ripgrep
あなたが Fedora 24歳以上 ユーザー、からインストールできます copr。
$ dnf copr enable carlgeorge/ripgrep
$ dnf install ripgrep
あなたが RHEL / CentOS 7 ユーザー、からインストールできます copr。
$ yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlgeorge/ripgrep/repo/epel-7/carlgeorge-ripgrep-epel-7.repo
$ yum install ripgrep
あなたが ニックス ユーザー、からインストールできます nixpkgs。
$ nix-env --install ripgrep #Or using the attribute name, which is also `ripgrep`
あなたが さびプログラム、貨物と一緒に設置できます。 これにはあなたが持っている必要があることに注意してください Rust1.12以降 インストールされています。
$ cargo install ripgrep
ripgrepは現在、他のパッケージリポジトリにはありません。 それを変えたいのですが。
いくつかの例
以下に示すように、コマンド「rg’name ‘」を使用して、任意のキーワードを再帰的に検索できます。
$ rg plugins
この example 検索パス内のすべての非表示ファイルとバイナリファイルをスキップします。 これは、以下に示すように、「-uフラグ」または「-uuフラグ」のいずれかを使用して明示的に指定できます。
$ rg -uu plugins # similar to `grep -r`
$ rg -uuu plugins # similar to `grep -a -r`
検索して置換
1行に1つのパターンを使用して、指定されたファイルからパターンを検索します。 このフラグを複数回使用するか、「-e / -regexp」フラグと組み合わせて使用すると、提供されているすべてのパターンが検索されます。 空のパターン行はすべての入力行に一致し、改行はパターンの一部としてカウントされません。 -r、-replace
1) 姓名を検索し、正規表現パターンを使用してそれらを交換し、それらを2つの変数に割り当て、-replaceフラグを適用します
$ rg '([A-Z][a-z]+)s+([A-Z][a-z]+)' --replace '$2, $1' #'([A..Z]..)' -> regexp flag
検索を実行せずに検索される各ファイルを出力する–filesフラグを使用してファイル内のパターンを検索します。 l –files-with-matchesフラグは、少なくとも1つの一致するパスを示します。 また、一致しないファイルの表示についても(–files-without-match); 実際に検索を実行せずに検索される各ファイルを印刷します。 これは、特定のファイルが検索されているかどうかを判断するのに役立ちます。
2) シンボリックリンクをたどって、ドキュメントディレクトリでプラグインを含むファイルを検索します
$ rg -LF 'plugins' /home/localhost/Documents/ # -L flag for following symbolic links
指定されたglobを-gまたは–globフラグと一致させる検索用のファイル/ディレクトリを含めるか除外します。 これは常に他の無視ロジックをオーバーライドします。 複数のグロブフラグを使用できます。 グロブルールは.gitignoreグロブと一致します。 グロブの前に! それを除外します。
$ rg plug -g 'README.*'
$ rg plug -g '!*.min.js' #excludes glob
結論
Ripgrepは、ファイルの単一ディレクトリと巨大ディレクトリの両方を検索する点で、現在Linuxシステムで見つかった他の検索ツールよりも優れており、パフォーマンスと正確性の両方で優れています。 また、ripgrepはUnicodeサポートを提供し、grep、awk、sed、findなどの現在利用可能なツールよりもうまく機能し、Linuxユーザーにとって追加の利点になります。