cat
や tail -f
からパイプで受け取ったテキストから複数の単語を色違いにハイライト表示させたい場合に利用します。
grepのハイライト機能( grep --color=auto
)だと検索ひっかかった行のみしか表示されないということで作ってみました。
スクリプト
function highlight_multi() { words=("$@") c_off=$'\e[0m' while read line do color_num=31 text=${line} for word in ${words[@]} do color_num=$((color_num+1)) c_on=$(echo -e "\e[1;${color_num}m") text=$(echo -e ${text} | sed -u "s/${word}/${c_on}\0${c_off}/g") done echo -e ${text} done }
使い方
上記のスクリプトをターミナルでコピペ。またはシェル化。
こんな感じで使います。
tail -f /var/log/httpd/access_log | highlight_multi Mac 500 Chrome
cat /path/to/something.txt | highlight_multi Mac 500 Chrome
細かい制御はできませんがさっと使いたい場合に。他にも良い方法あれば知りたい・・
参考URL
dev-shell-essentials/highlight.sh at master · kepkin/dev-shell-essentials · GitHub