LoginSignup
0
0

More than 1 year has passed since last update.

シェルスクリプト 出力文字列の部分色付け Linux sh bash sed echo printf

Last updated at Posted at 2022-01-15

概要

シェルスクリプト出力結果の一部を指定して色つけしたい
実行環境は Mac or RHEL系Linux
e.png

※ 今回は紫色にするので
 色数字に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 は不要なので消す

出力結果

スクリーンショット 2022-01-15 12.52.15.png

応用

echo内容を 変数 に置き換えれば色々流用できそう。
あとはsedの正規表現が組めるか次第

参考

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