grep은 ANSI 이스케이프 코드를 얻습니다.

grep은 ANSI 이스케이프 코드를 얻습니다.

문자 또는 리터럴 문자열을 개별적으로 이스케이프하는 방법에 대한 많은 링크를 확인했지만 grep배경이 red 인 ANSI 이스케이프 시퀀스를 찾기 위해 결합할 수 없으며 + 및 두 개의 리터럴 문자 +를 ^[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

관련 정보