문자 ^[[37m
와 ^[[0m
의 일부 ANSI 이스케이프 시퀀스 (CSI 코드) . 이 사양 도 참조하십시오 .
GNU 사용 sed
sed 's/\x1b\[[0-9;]*m//g'
\x1b
(나 \x1B
)이있다 이스케이프 특수 문자
( sed
대안을 지원하지 않습니다 \e
와 \033
)
\[
이스케이프 시퀀스의 두 번째 문자입니다
[0-9;]*
색상 값 정규식입니다.
m
이스케이프 시퀀스의 마지막 문자입니다
⚠ macOS에서 기본 sed
명령은 주석에서 slm 및 steamer25\e
로 지적 된 것과 같은 특수 문자를 지원하지 않습니다 . 대신 을 사용하여 설치할 수 있습니다 .gsed
brew install gnu-sed
OP의 명령 줄을 사용한 예 : (OP는 원본 포스터를 의미)
perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' |
sed 's/\x1b\[[0-9;]*m//g'
Tom Hale 은 그래픽 모드 (컬러) 이스케이프 시퀀스에 고유 [a-zA-Z]
한 문자 대신 다른 모든 이스케이프 시퀀스를 제거 할 것을 제안 m
합니다. 그러나 [a-zA-Z]
너무 넓어서 너무 많이 제거 할 수 있습니다. 마이클 Faleński 와 미구엘 모타 사용하여 일부 이스케이프 시퀀스를 제거하기 위해 제안 [mGKH]
하고 [mGKF]
각각. Britton Kerin 은 오류 / 경고 에서 색상을 제거하는 K
것 외에 사용해야 함을 나타냅니다 (리디렉션하는 것을 잊지 마십시오 ).m
gcc
gcc 2>&1 | sed...
sed 's/\x1b\[[0-9;]*m//g' # Remove color sequences only
sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' # Remove all escape sequences
sed 's/\x1b\[[0-9;]*[mGKH]//g' # Remove color and move sequences
sed 's/\x1b\[[0-9;]*[mGKF]//g' # Remove color and move sequences
Last escape
sequence
character Purpose
--------- -------------------------------
m Graphics Rendition Mode (including Color)
G Horizontal cursor move
K Horizontal deletion
H New cursor position
F Move cursor to previous n lines
사용 perl
sed
일부 운영 체제 에 설치된 버전은 제한적일 수 있습니다 (예 : macOS). 이 명령 perl
은 일반적으로 더 많은 운영 체제에서 설치 / 업데이트하기가 더 쉽다는 장점이 있습니다. Adam Katz 는 PCRE 에서 \e
(와 동일 \x1b
) 사용할 것을 제안합니다 .
필터링 할 명령 수에 따라 정규식을 선택하십시오.
perl -pe 's/\e\[[0-9;]*m//g' # Remove colors only
perl -pe 's/\e\[[0-9;]*[mG]//g'
perl -pe 's/\e\[[0-9;]*[mGKH]//g'
perl -pe 's/\e\[[0-9;]*[a-zA-Z]//g'
perl -pe 's/\e\[[0-9;]*m(?:\e\[K)?//g' # Adam Katz's trick
OP의 명령 줄을 사용한 예 :
perl -e 'use Term::ANSIColor; print color "white"; print "ABC\n"; print color "reset";' \
| perl -pe 's/\e\[[0-9;]*m//g'
용법
에 의해 지적 스튜어트 Cardall 의 의견이 sed
명령 줄은 프로젝트에서 사용하는 궁극적 인 Nginx에 나쁜 봇 이메일 보고서를 정리 (1000 점) ;-)
more
거나less -R
이스케이프 코드를 텍스트 편집기 대신 색상으로 해석 할 수도 있습니다.