【bash】awkを使った文字色などの変更方法

※アフィリエイト広告を利用しています
※アフィリエイト広告を利用しています

awk を使って文字色や背景色を変更するには、ANSIエスケープシーケンスを使用します。ターミナル上で出力の色を変更することで、ログやデータ表示を見やすくできます。
チェックツールとか作って、エラー箇所を赤字にしたりすると、見落としや可読性が上がりますよね。


基本的なANSIエスケープシーケンス

ANSIエスケープコードは \033[ (または \e[ ) で始まり、以下のようなコードを組み合わせて色を指定します。

属性コード
リセット0
太字1
下線4
文字色(前景)30~37(黒~白)
背景色40~47(黒~白)

例:

  • 文字を赤にする → \033[31m
  • 背景を青にする → \033[44m
  • 文字を緑、背景を黄色にする → \033[32;43m
  • すべてリセット → \033[0m

awk で文字色や背景色を変更する方法

文字色を変更する

以下の例では echo の出力を awk で処理し、特定のカラムの色を変更します。

出力:

  • $1(最初のカラム)を  (31m) に設定
  • \033[0m でリセット

背景色を変更する

出力:

  • $1 を 赤字(31)+黄色背景(43) に変更
  • \033[0m でリセット

条件によって色を変更する

売上($2)が200未満なら赤で表示する例:

出力:


複数カラムの色を変える

出力:

  • $1(果物名)を  (34m)
  • $2(数値)を 黄色 (33m)

列の幅を揃えて色付きで表示する

printf を使うと、整形して見やすくできます。

出力:

  • %-10s: 左揃え10文字
  • %5d: 右揃え5桁
  • $1(果物名)を  (31m)
  • $2(数値)を 青 (34m)

まとめ

  • \033[XXm を使って文字色・背景色を変えられる
  • awk の print でエスケープシーケンスを組み合わせる
  • printf を使うと整形しやすい
  • 条件分岐で動的に色を変えることも可能

一覧

文字色

ANSI コード
\033[30m
\033[31m
\033[32m
\033[33m
\033[34m
\033[35m
シアン\033[36m
\033[37m
リセット\033[0m

背景、その他

スタイルANSI コード
太字\033[1m
下線\033[4m
背景 黒\033[40m
背景 赤\033[41m
背景 緑\033[42m
背景 黄\033[43m
背景 青\033[44m
背景 紫\033[45m
背景 シアン\033[46m
背景 白\033[47m

コメント

タイトルとURLをコピーしました