curlコマンド実行時にHTTPレスポンスヘッダの特定文字列の色を変更する

ANSIエスケープコードは、コンソールの表示を制御するための特殊な文字列です。これを使用することで、文字の色や背景色を変更できます。
今回は、curlコマンドで打鍵して、HTTPレスポンスヘッダに含まれる「HTTP/1.1 200 OK」という文字列の文字色を赤色、文字背景色を黄色に変更する例を紹介します。基本的な書き方は下記の通りです。
curl -v http://example.com 2>&1 | sed ‘s/HTTP\/1\.1 200 OK/\x1B[31;43m&\x1B[0m/g’

コマンドの説明

  • curl -v :詳細なログ出力を行います。
  • 2>&1 :-vオプションの出力は標準エラー出力に送られるため、標準出力にリダイレクトしています。(重要)
  • sedコマンドを使用して特定文字列の文字色と背景色を変更します。
    • \x1B(または\033):エスケープ文字。(以下、 ESC と表記)
    • [ : 制御シーケンスの開始(CSI)
    • m : 文字の色やスタイルの設定(SGR)
    • ESC[31 : 文字色を赤に設定
    • ESC[43 : 背景色を黄色に設定
    • ; : 複数の色指定を行う際の区切り文字
    • ESC[0 : 色指定をリセット
    • & : マッチした文字列全体

curlの-vオプションによりHTTPレスポンスヘッダが標準エラー出力されるところが盲点でした。「2>&1」でリダイレクトしないと色が変わらないので注意してください。

エスケープ文字(ESC:\x1B or \033)の入力方法

サクラエディタでコントロールコードを入力します。
  • 「編集」→「挿入」→「コントロールコード入力」から「ESC(エスケープ)」を選んでOK

参考

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