- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-11-22T02:49:07+00:00","","")
[[App]]
#author("2022-09-03T07:08:46+09:00","","")
#topicpath
///////////////////////////////////////////////////////////////////////////////
* 目次 [#p63d201f]
#contents();
///////////////////////////////////////////////////////////////////////////////
* ripgrep [#qf8f4cb3]
- ripgrep は、grep の高速な代替コマンド。
///////////////////////////////////////////////////////////////////////////////
* build [#pba858da]
- debian9 にはパッケージがないので、使うのであればビルドする必要がある。
- build には cargo (The Rust package manager) が必要なので、入ってない場合は入れる。
# apt-get install cargo
+ ソースコードの取得
$ git clone https://github.com/BurntSushi/ripgrep.git
$ cd ripgrep
$ git checkout refs/tags/12.0.1
+ README.md の記載に従いビルドする
$ cargo build --release
+ ビルド出来たか確認する
$ ./target/release/rg --version
+ ビルドして出来たコマンドの場所に環境変数 PATH を通すか、コマンドファイルを PATH の通っているところに移す。
///////////////////////////////////////////////////////////////////////////////
* grep とのオプション比較 [#r53574b8]
|~option (ripgrep) |~option (grep) |~description |
|<pattern> |<pattern> |match or unmatch pattern |
|-e <pattern> |-e <pattern> |<pattern> をパターンとして指定する(POSIXに準拠) |
|-f <file> |-f <file> |パターンを <file> から1行を1パターンとして読み込む |
| |-E, --extended-regexp|PATTERN を拡張正規表現 (ERE) として扱う |
|-E, --encoding <ENC> | |検索する全てのファイルのエンコーディングを <ENC> とする |
|-F, --fixed-strings |-F, --fixed-strings |PATTERN を改行で区切られた正規表現ではない文字列として扱う |
|-A <num> |-A <num> |検索結果に、その後の <num> 行を付加する |
|-B <num> |-B <num> |検索結果に、その前の <num> 行を付加する |
|-C <num> |-C <num> |検索結果に、その前後の <num> 行を付加する |
|-H |-H |検索結果にファイル名を付加する |
|-h |--help |ヘルプを表示 |
|-I, --no-filename |-h |検索結果にファイル名を表示しない |
| |-I |バイナリファイルを検索対象外とする(ripgrepはデフォルトではバイナリを検索対象としない) |
|-j,--threads <num> | |使用するスレッドの概数を <num> にする |
|-a |-a |バイナリファイルを検索対象とする |
|--no-filename |-h |検索結果にファイル名を付加しない |
|-i, --ignore-case |-i, --ignore-case |入力ファイル、検索パターンの療法で、大文字・小文字を区別しない |
|-n |-n |検索結果に行番号を付加する |
|-N | |検索結果に行番号を付加しない |
|-q |-q |標準出力に何も出力しない |
|-r,--r <replace-text>| |検索結果のパターンマッチした文字列を、 <replace-text> で置換して表示する |
| |-r,-R,--recursive |下位のディレクトリを再帰的に検索する(ripgrepはデフォルトで再帰読込する) |
|-t <TYPE> | |ファイルタイプが<TYPE> のものを検索対象にする |
|-v |-v |<pattern> で指定された文字列を含まないものを検索する |
|-w, --word-regexp |-w, --word-regexp |マッチする部分が完全な単語を形成するときにのみ、その行を選択する |
|--no-heading | |grep 形式で出力する |
///////////////////////////////////////////////////////////////////////////////
* emacs から使う [#bd8a9737]
- [[ripgrep.el>https://github.com/nlamirault/ripgrep.el]] または [[rg.el>https://github.com/dajva/rg.el]] を導入する。
//=============================================================================
** ripgrep.el [#emacs-ripgrep_el]
//-----------------------------------------------------------------------------
*** ripgrep.el の取得 [#bc3f5f43]
- 下記から取得出来る:
$ git clone https://github.com/nlamirault/ripgrep.el.git
//-----------------------------------------------------------------------------
*** 設定 [#ydee1aeb]
- ${HOME}/bin などに rg コマンドファイルがある場合、 ripgrep.el はコマンドを見付けられない場合がある。
このときは、以下のように require した後で設定を上書きする:
; ripgrep.el を読み込む
(require 'ripgrep)
; rg (ripgrep実行形式ファイル) へのパス
(setq ripgrep-executable "~/.cargo/bin/rg")
- ripgrep.el を使用する際に rg へ渡したいオプションがある場合は、同様にして以下を設定する:
; rgに渡すオプション
(setq ripgrep-arguments '("-S"))
///////////////////////////////////////////////////////////////////////////////
* 参考リンク [#k9d53c87]
- [[新世代grep 'ripgrep' - エクセレンス★ブログ>https://www.excellence-blog.com/2019/05/10/%E6%96%B0%E4%B8%96%E4%BB%A3grep-ripgrep/]]
- [[第579回 高速で便利なgrep「ripgrep」を活用する:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社>https://gihyo.jp/admin/serial/01/ubuntu-recipe/0579]]
- [[ripgrep.el>http://emacs.rubikitch.com/ripgrep/]]