単純な検索

greple の最も単純な使い方は grep と同じです。

greple pattern file

ファイルが指定されなければ、標準入力を対象にします。

grep と共通のオプションもあります。以下に挙げたものは、grep とほぼ同様の意味を持ちますが、挙動が若干違うものもあります。

  • -n 行番号を表示する
  • -i: 大文字小文字を無視する
  • -A, -B, -C: 前後の行を表示する
  • -o: マッチした部分だけを表示する
  • -h, -H: ファイル名の表示を制御する
  • -l: マッチしたファイル名のみを表示する
  • -c: マッチした数を表示する
  • -m: 表示数を制御する

正規表現

greple は、特別なオプションを指定しなくても、パターンに Perl の正規表現をそのまま使うことができます。どのバージョンの正規表現が使えるかは、実行する処理系に依存します。

正規表現は、行単位ではなくファイル全体を対象としてマッチしますが、デフォルトで複数行マッチが有効になっていて、行頭・行末を示す ^$ はすべての行にマッチします。

Perl 発祥の正規表現は PCRE (Perl Compatible Regular Expression) として、様々な言語やツールに組み込まれています。ripgrep の場合は、–pcre2 オプションをつけることで利用可能です。

実行例

次のようなファイルを用意してみました。某寿司チェーンのメニューを参考に少しアレンジしましたが、この程度ならまさか盗用とは言われないでしょう。このファイルに対して greple コマンドを実行してみます。

サービスセット      熟成まぐろ えび たまご いか サーモン いなり ねぎまぐろ サラダ
お子様セット        熟成まぐろ えび たまご いなり ツナサラダ
特上セット          中とろ 熟成まぐろ 熟成真鯛 はまち 赤えび ほたて うなぎ かに いくら
特上極旨セット      中とろ はまち かに いくら 赤えび サーモン うなぎ うに
うどんセット        熟成まぐろ サーモン たまご えび うどん
サラダ軍艦セット    えびマヨ ツナサラダ サラダ シーフードサラダ
人気セット          熟成まぐろ 漬けまぐろ サーモン びんちょう いか えび えびアボカド たまご
まぐろづくしセット  中とろ 熟成まぐろ ねぎまぐろ
プレミアムセット    中とろ まぐろ サーモン 赤えび はまち うなぎ かに いくら

cat -n するとこうです。

スクリーンショット 2021-12-02 17.56.02.png

greple

行番号を表示する -n オプションをつけて greple を実行してみます。

スクリーンショット 2021-12-02 17.59.02.png

greple は、このように、デフォルトで検索した文字列を色付きでハイライトして表示します。最近の検索系コマンドは大概カラー出力に対応しているので珍しくはありません。

grep

grep は、–color オプションをつけることでカラー出力ができます。

スクリーンショット 2021-12-02 18.02.03.png

ripgrep

ripgrep は、デフォルトでハイライト出力します。行番号やファイル名には異なる色がつきます。

image.png

端末以外の出力

これらのコマンドは、出力が端末でない場合には、色付き出力の機能を無効にします。パイプにも着色して出力するためには --color=always オプションを指定します。--color オプションの仕様は、どのコマンドもほぼ共通で、値として never, auto, always を取ります。ただ、grep はデフォルトが never、greple と ripgrep は auto という違いがあります。

まとめ

単純な文字列を指定した検索について説明しました。もっとも、このような使い方であれば greple を使う必要はまったくないので別のツールを使った方がいいでしょう。実行速度に関しては、インタプリタ型の greple はかなり不利ですが、一般的な使い方であれば実用上問題になるようなことはありません。

SEE ALSO


Last modified April 24, 2023: update submodules (e4ab308)