はじめに
今回はLinuxの**grep
**コマンドで文字列に色を付ける時のテクニックをいくつかご紹介します!
・検索した文字列に色を付ける
・検索した行以外を消さずに色を付ける(全ての行を残して色付けする)
・配色を変える
検索した文字列に色を付ける
grep
コマンドで検索した文字列(今回は「ABCDEF」)に色を付けるには、後ろに--color
を付けます。
出力結果を|
の右側に渡したい場合は、**--color=always
**とします。
ハイライトされることで、検索した文字列の場所が見やすくなります。
検索した行以外を消さずに色を付ける
grep --color
は便利ですが、grep
で引っかかった行以外が消えてしまうのが不便に感じる場面も多々あります。
(例えば目的の文字列がデータ内のどこにあるかを知りたいときなど)
そんな時には**egrep --color "$|検索したい文字列"
**という書き方で解決します。
grep -E --color "$|検索したい文字列"
や、$
をなくして
grep -E --color "|検索したい文字列"
としてもOKです。
|
を使うときには--color=always
とするのを忘れずに。
書き方に関していくつか補足をします。
・grepの
""
の中で|
を使う場合は、egrep
かgrep -E
にする必要があります。grep
のままだとうまく動いてくれません(\|
とすれば動く)。
・理屈としては最初の$|
で全ての行が選択されています。それによって全ての行が出力されるわけです。また色付けは本当はすべての行で行われていますが、$|
では選択される文字が何もないので、結果として**|検索したい文字列
だけが色付けされた状態で出力されます。**
(参照したサイトを載せたかったのですが、再度見つけることができませんでした・・・申し訳ないです🙇♂️)
配色を変える
grep --color
で色を付ける時に、赤色以外の色も使いたいと思う場面もあると思います。
その場合には**GREP_COLOR='カラーコード' grep --color "検索したい文字列"
**という書き方が有効です。
カラーコードを設定することで検索結果を好きな文字色に変更できます。
使用できるカラーコードを下に載せました!
色 | カラーコード | ||
---|---|---|---|
Black | 0;30 | Dark Gray | 1;30 |
Blue | 0;34 | Light Blue | 1;34 |
Green | 0;32 | Light Green | 1;32 |
Cyan | 0;36 | Light Cyan | 1;36 |
Red | 0;31 | Light Red | 1;31 |
Purple | 0;35 | Light Purple | 1;35 |
Brown | 0;33 | Yellow | 1;33 |
Light Gray | 0;37 | White | 1;37 |
引用:Bash Prompt HOWTO: ANSI エスケープシーケンス: 色とカーソル操作
この章を書く上で、以下のサイトにお世話になりました。
・grepの色を変える | コマンドの達人
・grepで指定オプションを自動付加してくれる環境変数 "GREP_OPTIONS" - 元RX-7乗りの適当な日々 (:カラーコード一覧へのリンク)
おまけ
本稿では紹介しませんが、GREP_OPTIONS
というのを使うことで、例えばgrep
と打っただけでgrep --color
をしてくれるといった設定もできるらしいです。
リンクを載せますので、興味ある方はぜひご覧ください。
・grepで指定オプションを自動付加してくれる環境変数 "GREP_OPTIONS" - 元RX-7乗りの適当な日々
・grepコマンドに色をつける - 作業ノート
また、grep --color
は内部的には文字列を変換するので(色を表す情報が文字列の前につく)、grep --color=always
とすると後続の検索や置換処理がうまくいかなくなる可能性がある点には注意が必要です。
以上が本稿の内容となります。
ご覧いただきありがとうございました!🙇♂️