複数のテキストファイルからパターンに一致する行を表示することができる便利なツール「grep」。使いやすく多くのユーザーが使用しているUNIXコマンドの一つだと思います。
本日紹介する「Blush」は、パターンに一致した箇所を指定の色で分かりやすく表示できるgrepツールの一種です。開発者Arsham Shirvani氏によってGo言語によって作成されたオープンソースツールで、色を利用して一致した箇所を素早く認識することが可能となっています。
実は通常版grepでも「grep --color=always」や「grep --color=auto」を使用して一致した箇所を色を変えて表示することができますが、Blushではより柔軟な指定が可能となっています。
以下使用法を説明します。
Blushの使用方法
記事執筆時バイナリ形式の実行ファイルは公開されていません。go getでインストールします。
go get github.com/arsham/blush
Blushは基本的には「blush -色 パターン ファイル」形式で使用します。例えば"gem"に一致する箇所を赤色で表示したい場合、以下のようなコマンドを実行します。
$ blush -r gem Gemfile
すると以下のような結果が表示されます。
複数のパターンを指定する場合もそれぞれのパターンに色が指定可能です。"gem"は赤で、"rails"は緑で、"spring"はマゼンタで表示したい場合、次のコマンドを実行します。
$ blush -r gem -g rails -mg spring Gemfile
それぞれの一致部分が分かりやすく表示されていることがわかります。
オプションで指定できる色は以下の通りです。
色 | ロング引数 | ショート引数 |
---|---|---|
赤 | --red | -r |
緑 | --green | -g |
青 | --blue | -b |
白 | --white | -w |
黒 | --black | -bl |
黄 | --yellow | -yl |
マゼンタ | --magenta | -mg |
シアン | --cyan | -cy |
その他RGB形式で、--#1b2, -#1b2や、--#11bb22, -#11bb22といった色の指定も可能です。
一方パターン部分には正規表現を指定することもできます。
$ blush -b "^age: [0-9]+" FILENAME
その他、Blushでは色を表示しない"--no-color"オプションなどを指定することも可能です。
+---------------+----------+------------------------------------------------+ | Argument | Shortcut | Notes | +---------------+----------+------------------------------------------------+ | --colour | -C | Colour, don't drop anything. | | N/A | -i | Case insensitive matching. | | N/A | -R | Recursive matching. | | --no-colour | N/A | Don't colourize matches. | | --no-color | N/A | Same as --no-colour. | | --no-filename | -h | Suppress the prefixing of file names on output.| +---------------+----------+------------------------------------------------+
詳細は公式サイトでご確認ください。
まとめ
Blushを使用すればマッチした箇所に色をつけてわかりやすく表示することができます。大量のテキストファイルからパターンに一致する文字列を検索し、どこが一致したかをすばやく確認したい場合に使用すると便利です。