#author("2020-04-27T16:24:47+00:00","","") #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 | |~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, --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 |ヘルプを表示 | |-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> で指定された文字列を含まないものを検索する | |-v |-v |<pattern> で指定された文字列を含まないものを検索する | |-w, --word-regexp |-w, --word-regexp |マッチする部分が完全な単語を形成するときにのみ、その行を選択する | |--no-heading | |grep 形式で出力する | |--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/]]