ripgrep
ripgrep (rg) は高速 なテキスト検索 ツールで、grep の機能 と現代的 な使用体験 を組 み合 わせています。
基本検索
簡単な検索
rg pattern # 現在のディレクトリで検索
rg pattern path/ # 指定ディレクトリで検索
rg pattern file.txt # 指定ファイルで検索
rg "multi word" # 複数単語を検索大文字小文字の制御
rg -i pattern # 大文字小文字を無視 (case-insensitive)
rg -s pattern # 大文字小文字を区別 (case-sensitive)
rg -S pattern # スマートケース (大文字があれば区別)完全一致
rg -w word # 完全な単語一致
rg '\bword\b' # 正規表現の単語境界を使用パターンマッチング
正規表現
rg '^pattern' # 行頭マッチ
rg 'pattern$' # 行末マッチ
rg 'pat.*tern' # 任意の文字マッチ
rg 'pattern\d+' # 数字マッチ
rg -P 'pattern' # PCRE2 エンジンを使用リテラル文字列
rg -F 'literal.string' # 固定文字列検索 (正規表現を解析しない)
rg -F -f patterns.txt # ファイルから複数の固定文字列を読み取り複数パターン検索
rg -e pattern1 -e pattern2 # OR 検索で複数パターン
rg 'pattern1|pattern2' # 正規表現の OR を使用出力制御
表示形式
rg -n pattern # 行番号を表示 (デフォルト)
rg -N pattern # 行番号を非表示
rg -H pattern # ファイル名を表示 (デフォルト)
rg --no-filename pattern # ファイル名を非表示
rg -l pattern # ファイル名のみ表示
rg -c pattern # 各ファイルのマッチ数のみ表示コンテキスト表示
rg -A 3 pattern # 後の 3 行を表示 (After)
rg -B 3 pattern # 前の 3 行を表示 (Before)
rg -C 3 pattern # 前後各 3 行を表示 (Context)出力スタイル
rg --color always pattern # 強制カラー出力
rg --color never pattern # カラーなし出力
rg --pretty pattern # 整形出力 (行番号、見出し含む)
rg --vimgrep pattern # Vim 形式出力
rg --json pattern # JSON 形式出力マッチ部分のみ表示
rg -o pattern # マッチしたテキストのみ表示
rg -r '$1' 'pat(tern)' # 置換して表示ファイルフィルタリング
ファイルタイプ
rg -t go pattern # Go ファイルのみ検索
rg -T go pattern # Go ファイルを除外
rg --type-list # サポートされるファイルタイプを一覧表示カスタムファイルタイプ
rg --type-add 'web:*.{html,css,js}' -t web pattern
rg -g '*.go' pattern # glob パターンを使用
rg -g '!*.min.js' pattern # glob パターンを除外ファイルパスフィルタリング
rg pattern -g 'src/**' # src ディレクトリ下のみ検索
rg pattern -g '!test/**' # test ディレクトリを除外
rg pattern -g '*.{go,rs}' # 複数の拡張子隠しファイルと無視ルール
rg -. pattern # 隠しファイルを含む
rg -u pattern # .gitignore を無視 (u 一回)
rg -uu pattern # 隠しファイル含む + .gitignore を無視
rg -uuu pattern # すべてのファイルを検索 (バイナリ含む)検索範囲
検索を制限
rg -m 5 pattern # 各ファイル最大 5 マッチ
rg --max-depth 2 pattern # 最大ディレクトリ深度
rg --max-filesize 1M pattern # ファイルサイズを制限逆検索
rg -v pattern # マッチしない行を表示
rg --files-without-match pat # マッチを含まないファイルを表示ファイルリスト
rg --files # 検索対象ファイルを一覧表示
rg --files -g '*.go' # 特定タイプのファイルを一覧表示高度な機能
複数行検索
rg -U 'pattern1.*pattern2' # 行をまたいで検索 (multiline)
rg -U 'start.*\n.*end' # 複数行の内容にマッチ文字列置換 (表示)
rg 'pattern' -r 'replacement' # 置換後の結果を表示
rg '(\w+)@(\w+)' -r '$2:$1' # キャプチャグループを使用統計と分析
rg --count pattern # 各ファイルのマッチカウント
rg --count-matches pattern # 総マッチ数
rg --stats pattern # 検索統計情報を表示前処理と圧縮
rg -z pattern file.gz # 圧縮ファイルを検索
rg --pre cat pattern # プリプロセッサを使用
rg --pre-glob '*.pdf' --pre 'pdftotext' patternパフォーマンス最適化
並列処理
rg -j 4 pattern # 4 スレッドを使用
rg -j 1 pattern # シングルスレッドで実行メモリ制御
rg --mmap pattern # メモリマッピングを使用 (デフォルト)
rg --no-mmap pattern # メモリマッピングを使用しないキャッシュとインデックス
rg --no-ignore-vcs pattern # .gitignore を読み取らない
rg --no-ignore-parent pattern # 親ディレクトリの無視ファイルを読み取らない特殊な用途
特定の内容を検索
rg -t go 'func \w+' -o # すべての関数名を抽出
rg -t js 'import.*from' # すべての import 文を検索
rg 'TODO|FIXME|XXX' # コードコメントマーカーを検索バイナリファイル
rg -a pattern # バイナリファイルを検索
rg --binary pattern # 同上
rg --text pattern # バイナリをテキストとして扱うエンコーディング処理
rg -E auto pattern # エンコーディングを自動検出
rg -E utf-8 pattern # UTF-8 エンコーディングを指定
rg -E none pattern # エンコーディング変換なしファイル内容タイプを検索
rg --type-add 'config:*.{yml,yaml,toml,json}' -t config pattern
rg --iglob '**/*.{log,txt}' patternデバッグ
デバッグ情報
rg --debug pattern # 詳細なデバッグ情報を表示
rg --trace pattern # トレース情報を表示
rg --files --debug # ファイルリストのデバッグテストと検証
rg --pcre2-version # PCRE2 バージョンを表示
rg --type-list # すべてのタイプ定義を一覧表示設定ファイル
設定ファイルを使用
# ~/.ripgreprc またはプロジェクトの .ripgreprc
--smart-case
--colors=path:fg:green
--max-columns=150export RIPGREP_CONFIG_PATH=~/.ripgreprc
rg pattern # 設定を自動読み込み実用例
# Go ファイルの TODO をすべて検索
rg -t go 'TODO|FIXME' -C 2
# API エンドポイント定義を検索
rg -t go 'router\.(GET|POST|PUT|DELETE)' -o
# 大きな関数を検索 (50 行以上)
rg -U '^func .*\{$' -A 50 | rg '^}$' -c
# SQL インジェクションリスクを検索
rg -t go 'Exec\(.*\+'
# 未使用の変数を検索 (簡略化)
rg -t go '^\s+\w+\s+:=' --no-filename | sort | uniq -c
# 2 つのブランチの差分を比較
rg -l 'pattern' > /tmp/current.txt
git checkout other-branch
rg -l 'pattern' > /tmp/other.txt
diff /tmp/current.txt /tmp/other.txt
# 重複コードを検索
rg -C 3 'pattern' | sort | uniq -d
# パフォーマンス分析:遅いクエリを検索
rg -t sql 'SELECT.*FROM.*WHERE' --stats使用のヒント
- 他のツールと組み合わせ:
rg pattern | fzf(ファジー検索) - パイプ処理:
rg -l pattern | xargs sed -i 's/old/new/g' - バージョン管理統合:
rg --files | entr rg pattern(自動再検索) - エイリアス設定:
alias rgg='rg --pretty --context 3'