とりあえずこれで!って書いただけなんで、処理速度とか気になる人いたら改善案くださいな!
結論
結論から書くよ!
highlight=""
i=0
for I; do
i=`expr $i + 1`
highlight+="-e s@\(${I}\)@\x1b[1;3${i}m\1\x1b[0m@g "
done
sed $highlight
このスクリプトを/usr/local/bin/hl
とかに置いて、
実行権限を与えて(chmod +x /usr/local/bin/hl
)、
こんな風に使う# tail -f /var/log/hoge.log | hl INFO DEBUG
するとこうなる。
説明
ざっくり説明すると、以下です。
hl という名前
強調表示!→ high light 略称で hlにした!好きな名前にしたらいいよ!
\x1b[1;3${i}m\1\x1b[0m という呪文
\x1b
=> ESCを指す
\x1b[
=> ESC[ => 画面出力の制御 CSIシーケンスと呼ばれています。
1;
=> セミコロンで複数命令可能で、1;は太字を指します。
3${i}m
=> 3${i}は31,32...となりますが、3は文字色を指定するよ。そのあとは色指定です。mは命令の終了。
\1
=> sedでHITした文字列が入る。
\xib[0m
=> ESC[0m => 画面出力の制御命令0、つまり終了を意味する。
繋げるとこういう呪文です。
「画面出力制御の命令を告げる!出力は太字にせよ!文字色は1個目は赤っぽく、2個目は緑っぽく...!命令は以上!
とりま送られてきた文字列を出力せよ!さっき言った命令はここで終了とする!」
色とか強調表示の参考は以下とかみてね。自由にカスタマイズしちゃってくださいね!
参考URL: https://www.serendip.ws/archives/4635