LoginSignup
4
4

More than 5 years have passed since last update.

シェルスクリプトで文字に色付け

Last updated at Posted at 2016-03-30

小ネタ

シェルで気軽に文字のをする関数を作ってみました。

filename
pallet()
{
  cat << EOF |awk 'sub(/#.*/,"") >=0 && NF>0'
# COLOR
BLACK     [30m        RED       [31m        GREEN     [32m        YELLOW    [33m
BLUE      [34m        MAGENTA   [35m        CYAN      [36m        WHITE     [37m
# BACKGROUND COLOR
BK_BLACK     [40m        BK_RED       [41m        BK_GREEN     [42m        BK_YELLOW    [43m
BK_BLUE      [44m        BK_MAGENTA   [45m        BK_CYAN      [46m        BK_WHITE     [47m
# CURSOR
MOVE_TOP     [1;1H        CLEAR        [2J        CLEAR_LINE   [0J
# CHARACTER
ORG       [0m        BOLD      [1m        UNDER     [4m        BLINK     [5m        REVERSE   [7m
EOF
}
export -f pallet

paint()
{
  COLOR=$1
  PATTERN="${2:-.*}"
  awk -v PATTERN=$PATTERN -v COLOR=$COLOR '
  BEGIN{ while ( "pallet" |& getline ) for(i=1;i<=NF;i=i+2)PAL[$i]="\033"$(i+1); }
  gsub(PATTERN,PAL[COLOR] "&" PAL["ORG"]) >= 0
  '
}

echo aaa bbb ccc |paint BLUE
echo aaa bbb ccc |paint RED a
echo aaa bbb ccc |paint YELLOW [ac] |paint BOLD

paint関数:標準入力を読みこんで文字に色を付けて表示する
 第一引数:色
 第二引数:色付けする文字のパターン(awk正規表現)
文字の色を変えるだけでなく、背景色を変えたり、画面クリア/カーソル位置変更や太字や下線を引くことも可能です。

4
4
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
4
4