색상 리디렉션 없음

색상 리디렉션 없음

중복 가능성:
스크립트 출력에서 ​​제어 문자(콘솔 코드/색상 포함) 제거

파일로 리디렉션할 때 모든 색상 코드를 비활성화하는 방법은 무엇입니까?

예전에 물어봤는데모든 것을 파일로 리디렉션하는 방법, 이제 색상 없이 리디렉션하는 방법을 알고 싶습니다.

그래서 대신:

^[(B^[[m^[[1m^[[31m:: ^[(B^[[m^[[1mDaemon script ^[(B^[[m^[[1m^[[31mntpd^[(B^[[m^[[1m does not exist or is not executable.^[(B^[[m

간단히 구현하려고합니다.

:: Daemon script ntpd does not exist or is not executable.

고쳐 쓰다:

jw013에서 제공한 링크를 보고 다음을 시도했습니다 sed.

rc.d restart ntpd | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" &> progress.txt

하지만 리디렉션도 하지 않고 색상이 지정된 출력을 콘솔에 표시할 뿐입니다.

업데이트 2:

user1146332의 의견에 따라 STDERR을 파이프하려면 파이프해야 합니다 |&.

rc.d restart ntpd | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" &> progress.txt

결과 :

^[(B:: ^[(BDaemon script ^[(Bntpd^[(B does not exist or is not executable.^[(B

더 깨끗하지만 여전히 일부 코드가 유지됩니다. 하지만 그 sed정규식은 제가 해독하기에는 너무 어렵습니다.

답변1

아치 리눅스를 실행하고 있으므로 USECOLOR 변수를 내보낼 수 있습니다.

%> export USECOLOR="no"  # color-less
%> /etc/rc.d/ntpd stop

그리고 sed를 이용하여 색상을 제거하는 기술은,

rc.d stop ntpd | sed -r "s:\x1B\[[0-9;]*[mK]::g"

하지만 이는 rc.d에 의해 생성된 백스페이스를 처리할 수 없습니다.

답변2

간단하고 아마도 더 일반적인 접근 방식은 TERM 변수를 "vt100"과 같이 색상을 지원하지 않는 변수로 변경하는 것입니다.

답변3

색상 코드의 형식이 어떻게 지정되어 있는지 잘 모르겠지만 한 번 시도해 보세요.

command | awk '{gsub(/\^[^Bm]*[Bm]/,"")}1'

관련 정보