CentOS 4.4에서 텍스트 파일에서 이스케이프 시퀀스를 제거하려면 어떻게해야합니까?


17

텍스트 파일에서 색상 코드 이스케이프 시퀀스를 제거하는 데 어떤 명령을 사용할 수 있습니까? 이상적으로는 파이프를 통과 할 수 있습니다. 컬러 텍스트 rainbow.txt가 많은 파일이 있으면 그 차이는 무엇입니까?

cat rainbox.txt | *something* > plain.txt

CentOS 4.4에서 bash에서 일하고 있습니다.

답변:


30

시험:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

세 가지 답변 중 이것이 유일하게 작동했습니다.
slm

4

cat rainbox.txt | col -b > plain.txt


왜 이것에 대한 의견이 없습니까? 나를 위해 작동하는 유일한 솔루션! 그리고 그것은 너무 간단합니다!
푸네 헤헤

3
그것은 나를 위해 작동하지 않기 때문에.
lzap

6
이것은 인수가 아닌 이스케이프 문자 만 제거합니다.
Aaron

1

이스케이프 시퀀스가 ​​무엇인지는 일반적으로 잘 정의되어 있지 않기 때문에 이스케이프 시퀀스가 ​​어떤 종류의 터미널에 적합한 지 알아야합니다. 문제를 "ANSI 색상 시퀀스 제거"(제대로 가정)로 제한하려면 다음과 같이하십시오.

sed 's/\o033\[[0-9]*;[0-9]*m//g'

트릭을해야합니다.


1

다음은 [Xm , [X; m , [X; Ym , [X; Y; Zm) 가능성 을 캡처합니다 (일부는 기술적으로 잘못되었을 수 있지만 작동하며 야생에서 보임).

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.