문자 또는 리터럴 문자열을 개별적으로 이스케이프하는 방법에 대한 많은 링크를 확인했지만 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
.
[선택하다]:
\grep -P '\e\[41m'
(출처 : OP의 코멘트)\grep '^[\[41m'
, + 다음에 Ctrl+ 를 사용하여 생성됩니다 . 키보드의 백스페이스 키가 0x08이 아닐 때 유용하지만 + 다음에 +를 사용 하여 생성 할 수 있습니다 (^H get from ).VCtrl[^[
CtrlVCtrlHascii 08