LoginSignup
22
11

More than 3 years have passed since last update.

grepで検索した行以外を消さずに色付けする方法

Last updated at Posted at 2020-06-10

はじめに

今回はLinuxのgrepコマンドで文字列に色を付ける時のテクニックをいくつかご紹介します!
検索した文字列に色を付ける
検索した行以外を消さずに色を付ける(全ての行を残して色付けする)
配色を変える

検索した文字列に色を付ける

grepコマンドで検索した文字列(今回は「ABCDEF」)に色を付けるには、後ろに--colorを付けます。
出力結果を|の右側に渡したい場合は、--color=alwaysとします。

ハイライトされることで、検索した文字列の場所が見やすくなります。
grep --color.png

検索した行以外を消さずに色を付ける

grep --colorは便利ですが、grepで引っかかった行以外が消えてしまうのが不便に感じる場面も多々あります。
(例えば目的の文字列がデータ内のどこにあるかを知りたいときなど)

そんな時にはegrep --color "$|検索したい文字列"という書き方で解決します。

grep -E --color "$|検索したい文字列"や、$をなくして
grep -E --color "|検索したい文字列"としてもOKです。

|を使うときには--color=alwaysとするのを忘れずに。

grep --colo2.png

書き方に関していくつか補足をします。

・grepの""の中で|を使う場合は、egrepgrep -Eにする必要があります。grepのままだとうまく動いてくれません(\|とすれば動く)。

・理屈としては最初の$|で全ての行が選択されています。それによって全ての行が出力されるわけです。また色付けは本当はすべての行で行われていますが、$|では選択される文字が何もないので、結果として|検索したい文字列だけが色付けされた状態で出力されます。

(参照したサイトを載せたかったのですが、再度見つけることができませんでした・・・申し訳ないです🙇‍♂️)

配色を変える

grep --colorで色を付ける時に、赤色以外の色も使いたいと思う場面もあると思います。

その場合にはGREP_COLOR='カラーコード' grep --color "検索したい文字列"という書き方が有効です。

カラーコードを設定することで検索結果を好きな文字色に変更できます。
使用できるカラーコードを下に載せました!

grep --colo3.png

カラーコード
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とすると後続の検索や置換処理がうまくいかなくなる可能性がある点には注意が必要です。

grepコマンドの--color=alwaysオプションを使うべきではない

以上が本稿の内容となります。
ご覧いただきありがとうございました!🙇‍♂️

22
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
11