색상 전환은 텍스트에 포함 된 이스케이프 시퀀스를 통해 수행 됩니다. 사실상 , 프로그램은 ANSI 이스케이프 시퀀스를 발행 합니다 . 요즘 거의 모든 터미널이 지원하기 때문입니다.
적색 전경 색상을 전환 할 이스케이프 시퀀스 인 \e[31m
경우, \e
(033,도 진수 ESC라고도 1B, 진수 제어 문자를 지정 ^[
하고 다양한 다른 명칭). 30-39 범위의 숫자는 전경색을 설정합니다. 다른 숫자는 다른 속성을 설정합니다. \e[0m
모든 속성을 기본값으로 재설정합니다. cat -v
프로그램이 인쇄하는 것을 확인하기 위해 실행하십시오. \e[0;31m
먼저 모든 속성을 재설정하거나 \e[3;31
기울임 꼴을 켜는 등 많은 변형을 사용할 수 있습니다 (많은 터미널이 지원하지 않는).
ksh, bash 또는 zsh에서는 $'…'
따옴표 안에 백 슬래시 이스케이프를 활성화 $'\e'
하여 이스케이프 문자 를 입력 할 수 있습니다 . 그런 다음 전달하려는 백 슬래시를 두 배로 늘려야합니다 grep
. 에서가 /bin/sh
, 당신은 사용할 수 있습니다 "$(printf \\e)"
또는 문자 이스케이프 문자를 입력합니다.
는 GNU와 함께 grep -o
옵션, 다음 코드는 이스케이프 시퀀스로 시작한다고 가정, 빨간색 텍스트 필터 \e[31m
와 하나 끝 \e[0m
이나 \e[30m
하고, 같은 줄에 더 이스케이프 시퀀스 임베디드 포함.
grep -Eo $'\e\\[31m[^\e]*\e\\[[03]?m'
다음 awk
스 니펫은 여러 줄인 경우에도 빨간색 텍스트를 추출합니다.
awk -v RS='\033' '
match($0, /^\[[0-9;]*m/) {
color = ";" substr($0, 2, RLENGTH-2) ";";
$0 = substr($0, RLENGTH+1);
gsub(/(^|;)0*[^03;][0-9]*($|;)/, ";", color);
red = (color ~ /1;*$/)
}
red'
색상 변경 명령을 유지하는 변형이 있습니다. 여러 색상 (여기서 빨간색과 자홍색)을 필터링 할 때 유용 할 수 있습니다.
awk -v RS='\033' '
match($0, /^\[[0-9;]*m/) {
color = ";" substr($0, 2, RLENGTH-2) ";";
printf "\033%s", substr($0, 1, RLENGTH);
$0 = substr($0, RLENGTH+1);
gsub(/(^|;)0*[^03;][0-9]*($|;)/, ";", color);
desired = (color ~ /[15];*$/)
}
desired'
>&1
있습니까? 내 말은, 만약 당신이 붉은 물건은 사라지지 않는 것입니다2>/dev/null
.