概要
シェルスクリプト出力結果の一部を指定して色つけしたい
実行環境は Mac or RHEL系Linux
※ 今回は紫色にするので
色数字に035 → [35m
を使用する
形式例
シンプルに色つけ
ESC=$(printf '\033')
echo "${ESC}[35m色をつけたい文字列${ESC}[m"
開始/終了記号も変数化してみた
ESC=$(printf '\033');COLS=$(printf '[35m');COLE=$(printf '[m')
echo "${ESC}${COLS}色をつけたい文字列${ESC}${COLE}/g"
sed:複数指定する(-E使用時の)場合
# ; で区切って複数書く
sed -E "s/条件1/変更内容1/g; s/条件2/変更内容2/g"
sed:条件で拾った内容をそのまま出力に流用
# () で囲って \1 で出力
sed -E "s/(条件1)/\1/g"
サンプル
コマンド
ESC=$(printf '\033');COLS=$(printf '[35m');COLE=$(printf '[m'); \echo -e "hogehttppiyo\nhttppiyo\nhogehttpshoge" | \sed -E "s/(^http.*$)/${ESC}${COLS}\1${ESC}${COLE}/g; s/(https)/${ESC}${COLS}\1${ESC}${COLE}/g"
シェルスクリプト
#!/bin/sh
ESC=$(printf '\033')
COLS=$(printf '[35m')
COLE=$(printf '[m')
TEXT1="hogehttppiyo"
TEXT2=`echo "http"`
TEXT="${TEXT1}\n${TEXT2}piyo\nhogehttpshoge"
\echo -e $TEXT | \sed -E \
"s/(^http.*$)/${ESC}${COLS}\1${ESC}${COLE}/g;\
s/(https)/${ESC}${COLS}\1${ESC}${COLE}/g"
# Macでは echo -e の -e は不要なので消す
出力結果
応用
echo
内容を 変数 に置き換えれば色々流用できそう。
あとはsed
の正規表現が組めるか次第
参考