파일로 리디렉션할 때 모든 색상 코드를 비활성화하는 방법은 무엇입니까?
예전에 물어봤는데모든 것을 파일로 리디렉션하는 방법, 이제 색상 없이 리디렉션하는 방법을 알고 싶습니다.
그래서 대신:
^[(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'