小ネタ
シェルで気軽に文字のをする関数を作ってみました。
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正規表現)
文字の色を変えるだけでなく、背景色を変えたり、画面クリア/カーソル位置変更や太字や下線を引くことも可能です。