問題
ripgrep という高速に動作する検索コマンドがある。これを使って日常的にソースコードを調べているが、ときどき検索したい文字が、他の文字の部分文字列になっていて、余分な行が出力されてしまうことがある。たとえば unit
を検索したいのだが unit_id
がたくさんヒットしてしまう、といった事が起こる。
ripgrep では正規表現が有効だが、否定先読みはできない。
解決策
最も簡単な方法は --invert-match
(短縮形は -v
)を使うこと。たとえば、下記のようにする。
rg unit | rg -v unit_id
ただし、色付けやグルーピングの情報が落ちてしまう。しかも、二つとも登場する行がヒットしなくなってしまう。例えば下記。
unit = unit_id
もっと良い方法があるかもしれない。
ag をインストールしているなら否定先読みができるらしい。 ag を使うべきか。