grepはANSIエスケープコードを取得します。

grepはANSIエスケープコードを取得します。

文字またはリテラル文字列を個別にエスケープする方法への多くのリンクを確認しましたが、背景が赤のgrepANSIエスケープシーケンスを見つけるために組み合わせることはでき^[41mませ^[ん。 。同時に。Ctrl+VCtrl+[^[-E-F

私が探したい生のバイトはhexdump次のとおりです。

1b 5b 33 37 6d 1b 5b 34 31 6d 30 2e 30 30 25

ここでは、に対応します。WHITE FOREGROUND RED BACKGROUND 0.00%このコードを生成しています。Python用coloramaパッケージそして、Fore.WHITE+Back.REDもし気になる方がいらっしゃるなら。

それでは、私が逃している秘密は何ですか?

答え1

ただし、背景赤のANSIエスケープシーケンスを見つけるために組み合わせることはできません。^[41分

vimこのファイルを次のように開くと^[41分、しかし^[[41分、どちら^[矢印キーを介してグループに移動します。

ここに画像の説明を入力してください。

1bはい脱出する+^[で呼び出すことができる単一のエスケープ文字で表示され、その後に続きます。 2つの文字のように見えますが、そうではなく単一の文字です。CtrlVEsc^[

xb@dnxb:~/Downloads/grep$ ascii 1b
ASCII 1/11 is decimal 027, hex 1b, octal 033, bits 00011011: called ^[, ESC
Official name: Escape

xb@dnxb:~/Downloads/grep$

次の手順を実行します(Ctrl+Vの後にEsccreateを使用してから連続して^[入力します\[41m)。

xb@dnxb:~/Downloads/grep$ hexdump -C /tmp/2
00000000  1b 5b 33 37 6d 1b 5b 34  31 6d 30 2e 30 30 25 0a  |.[37m.[41m0.00%.|
00000010
xb@dnxb:~/Downloads/grep$ \grep '^[\[41m' /tmp/2
0.00%
xb@dnxb:~/Downloads/grep$ \grep '^[\[41m' /tmp/2 | hexdump -C
00000000  1b 5b 33 37 6d 1b 5b 34  31 6d 30 2e 30 30 25 0a  |.[37m.[41m0.00%.|
00000010
xb@dnxb:~/Downloads/grep$ 

\エイリアシング効果を避けるには、プレフィックスでgrepをエスケープします--color

ここに画像の説明を入力してください。

[選択]:

  1. \grep -P '\e\[41m'(出典:OPのコメント)
  2. \grep '^[\[41m'、+の後にCtrl+を使用して作成されます。キーボードのバックスペースキーが0x08ではない場合に便利ですが、+の後に+を使用して生成できます(^ H get from)。VCtrl[^[CtrlVCtrlHascii 08

関連情報