- 強力で、非常に高速、ユーザーフレンドリーで、grep互換のファイルパターン検索ツール
- 新しいファイルインデクサーを使用してファイルシステム検索を高速化し、TUI(テキストベースのユーザーインターフェース)または grep 互換オプションを使ったコマンドラインから検索可能
- Google 検索に似たパターンコマンドをサポート
- あいまい検索をサポート(パターン内で1文字または2文字まで異なる単語も認識できるよう拡張、または最適な検索結果を導出)
- macOS、Windows、Alpine、Android Termux、Arch、CentOS、Debian、Fedora、FreeBSD、NetBSD、OpenSUSE、RHEL など多様なシステムにインストール可能
- ネストされた zip/tar/pax/cpio アーカイブ、圧縮ファイル、バイナリファイル、PDF、doc、docx など多様なファイル形式を検索し、ヘックスダンプできる
コマンド
ug と ugrep コマンドを使ってファイル内のパターンを検索でき、ug は作業ディレクトリまたはホームディレクトリにある .ugrep 設定ファイルを使用する。
ug --save-config OPTIONS は、現在の .ugrep 設定を使って新しい .ugrep ファイルを作業ディレクトリに保存する。
ugrep は .ugrep 設定ファイルを使用せず、シェルスクリプトで最もよく機能する。
- さまざまな例を通じて、ファイルやディレクトリ内でのパターンマッチ、設定ファイルの保存、Google 検索などの使い方を紹介している。
オプション
- ugrep は GNU grep と互換性があり、GNU grep のコマンドラインオプションをサポートする。
- ファイル一覧、マッチ表示、マッチ情報、マッチコンテキストなどを扱う多様なオプションを提供する。
- パターンマッチモード、対話型 TUI、ファイル検索、あいまい検索などの機能を含む。
アーカイブと圧縮ファイル
-z オプションを使ってアーカイブ、tar ボール、圧縮ファイルを検索できる。
- さまざまなオプションにより、特定レベルのアーカイブ内部検索、バイナリファイルの無視、ファイルタイプやグロブパターンに基づく検索をサポートする。
バイナリファイルとデバイス
- バイナリファイルを無視またはヘックスダンプするオプション、特殊デバイスを検索するオプションを含む。
除外と包含
- バイナリファイルの無視、シンボリックリンクの追跡、隠しファイルの包含、特定ファイルタイプやグロブパターン検索などを制御するオプションを提供する。
整形済み出力
- CSV、JSON、XML、ユーザー定義形式など多様な出力形式をサポートする。
見た目の改善、表示量の増減
- 出力を見やすくするオプション、色、ハイパーリンク、ページャー、タグ、マッチ置換などを含む。
ヘルプの取得
--help オプションで必要なヘルプを得られ、さまざまなオプションやパターン、グロブ、フィルターに関する詳細なヘルプを提供する。
GN⁺の意見
- ugrep は既存の grep ツールよりはるかに強力な機能を提供し、多様なファイル形式とパターンマッチオプションを通じてユーザーの検索体験を向上させる。
- ユーザーフレンドリーな TUI と設定ファイルにより、ユーザーに合わせた検索環境を構築できる。
- このツールは、ソフトウェア開発者やシステム管理者が大規模なコードベースやファイルシステムを効率的に探索・分析するのに非常に有用である。
2件のコメント
ripgrepをよく使っているので、どんな違いがあるのか検索していたところ、こんな記事を見かけました。
https://reddit.com/r/rust/…
数年前の話ではありますが、ugrepではugrepがripgrepより速いと言い、ripgrepではripgrepがugrepより速いと言っていて、どちらが正しいのか? という話なのですが、コメントが本当にすごいですね。
ugrepで行われたというテストをあらためて実施し、その結果を要約しています。
結果をざっくりまとめると、ほとんどの場合でripgrepのほうが速いのは間違いなさそうで、ugrep側は何か自分たちに有利な形でテストを進めたのではないか、という内容です。(ugrepでテストした内容そのもので試してもripgrep側のほうが良い結果になることが多い、ということですし、ugrep側はテストサイズを小さくしてノイズによるばらつきを大きくし、有利な結果だけを抜き出したのではないか、という疑いが含まれています。)
Hacker Newsのコメント
パフォーマンスと ripgrep(ripgrep) の比較に関するスレッドがあり、ripgrep ベースのテキストユーザーインターフェース(TUI)もいくつか紹介されている。
シェルパイプラインのリアルタイムプレビューを提供し、シェルに統合されるツールへの期待が語られている。zsh で
accept-and-holdzle ウィジェットを使って似た機能を実現したが、リアルタイムで結果を見られる方が望ましいとしている。n-gram インデクサーのサポートへの関心が示されている。ripgrep でもこの機能は計画されていたが、まだ実装されていない。大規模なコードベース向けに csearch を使っていたが、いくつか制限がある。新しいインデクサーは Linux カーネルツリーのインデックス作成に 86 秒かかり、csearch の cindex ツールよりかなり遅い。
互換性に関する重要な注意点として、実際には互換ではなく、GNU 版とは完全に異なる動作をするオプションが数秒で見つかったという指摘がある。
Sebastian Krahmer が作った grab も見てみるとよい。
新しいツールが XDG 標準に従わない理由について疑問が呈されている。XDG 標準に従えば、ホームディレクトリが大量の設定ファイルで散らかるのを防げる。
Debian ベースのリポジトリで利用できる Ugrep を高く評価する声もある。特に、タイプミスや 1〜2 文字の違いを許容するファジーマッチ機能が便利だという。
ファイル内の複数の用語を検索する機能、いわゆる「ファイルグーグリング」に満足しているという意見もある。以前は自分でスクリプトを書いていたが、この機能のおかげで不要になった。TUI も試す予定で、これまで使ってきた ripgrep をこのツールで置き換えられるか比較してみるとのこと。