![awk를 통해 파이프에서 수신된 입력에 접두사를 추가하고 조건부로 접두사 색상을 지정하는 방법은 무엇입니까?](https://linux55.com/image/37622/awk%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%ED%8C%8C%EC%9D%B4%ED%94%84%EC%97%90%EC%84%9C%20%EC%88%98%EC%8B%A0%EB%90%9C%20%EC%9E%85%EB%A0%A5%EC%97%90%20%EC%A0%91%EB%91%90%EC%82%AC%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EA%B3%A0%20%EC%A1%B0%EA%B1%B4%EB%B6%80%EB%A1%9C%20%EC%A0%91%EB%91%90%EC%82%AC%20%EC%83%89%EC%83%81%EC%9D%84%20%EC%A7%80%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음을 통해 수신(및 필터링)된 행에 접두사를 추가하는 방법이 있습니까 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