
다음을 통해 수신(및 필터링)된 행에 접두사를 추가하는 방법이 있습니까 awk
? 예, 알고 있습니다.그건지금까지는 조건부로(예를 들어 $PS1
주변 Bash 스크립트나 변수의 존재 여부 에 따라 [ -t 1 ]
) ANSI 이스케이프 시퀀스를 사용하여 색상을 지정하는 것이 가능합니까?
저는 앵커와 두세 가지 다른 방법을 사용하여 접두사를 추가하는 방법을 알고 있으며 ^
Bash echo
및 printf
.
awk
인라인 스크립트 내에서 평가할 수 있는 조건에 따라 개요에 따라 생성된 출력의 색상을 어떻게 지정할 수 있습니까 awk
?
참고: 내가 소유하거나 mawk
내가 gawk
처분할 수 있는 것이 mawk
기본값입니다.
답변1
if [ -t 1 ]; then
eval "$(printf 'COLOR_ON="\033[31m" COLOR_OFF="\033[m"')"
else
COLOR_ON= COLOR_OFF=
fi
export COLOR_ON COLOR_OFF
awk '{print ENVIRON["COLOR_ON"] "prefix: " ENVIRON["COLOR_OFF"] $0}'
또는:
[ ! -t 1 ]
awk -v color="$?" '{
print((color ? "\033[31m" : "") "prefix: " (color ? "\033[m" : "") $0)}'
답변2
다음을 통해 터미널을 확인할 수 있습니다.
> echo foo | awk '{if (system("tty >/dev/null 2>&1")) print "true"; else print "false";}'
true