とりあえずこれで!って書いただけなんで、処理速度とか気になる人いたら改善案くださいな!
結論
結論から書くよ!
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
