grep どうしてる?

自分が grep する際によく使うもののメモ。

  • ツール
    • VSCode
      VSCoder なのでそのまま検索バーに打ち込むことが多い。大文字小文字区別、単語区切りがボタンひとつでトグルできるのがよい
    • git grep
      結果をターミナルやファイルに書き出したいときによく使う
    • fd
      grep ではないがファイル名一覧を出したいときは fd を使う。
    • rails routes -g
      お仕事の routes が異常に複雑なので rails routes -g の結果を grep に渡して # でヒットなどもよくやる。 rails routes -g foo/bar/baz | grep baz# のような雰囲気。baz_controllerbaz_hoge_controller がたくさんあるので。
  • 正規表現
    • .*
      • メソッド呼び出し箇所を調べたい時
        Author#books のメソッド呼び出しは author.books a.books note.authors.map(&:books) かもしれない。 author.*books a.*books のようにして結果を見ながら調整する
      • 雑に検索したい時
        • クラスメソッドを検索したいが def self.foo def foo のどちらの可能性もある時は def .*foogrep する
        • Author::Awesome::Books Author::Cool::Books Author::Books のいずれもヒットさせたい時は Author::.*Booksgrep する
    • \b
      • 単語区切りを明確にしたい時
        notification を抽出したくて notifications は要らない時は notification\b と書く。super_users は不要で users のみ欲しい時は \busers と書く
    • grep とは関係ないがコマンド出力などをいい感じに整えたい時にも ,\n を置換したり(その逆も)もする
  • スクリプト
    検索結果が多い時や「Foo という名前空間のコントローラで」「bar というメソッドを呼んで」など検索条件が複数になる時はスクリプトを書く。 Ruby は文字列操作が柔軟にできるし Rails アプリのことは Rails に聞けば文字列操作よりもかんたんかつ正確にわかるのでとてもべんり