Как я могу добавить префикс для ввода, который я получаю из канала через awk, и условно окрасить префикс?

Есть ли способ добавить префикс в строки, полученные (и отфильтрованные) через awk – да, я знаю, что это возможно до сих пор – и затем условно (например, на основе существования переменной $PS1 для окружающего сценария Bash или [ -t 1 ] ) покрасить его с помощью escape-последовательностей ANSI?

Я знаю, как добавить префикс с помощью якоря ^ и двух или трех других способов, и я знаю, как использовать escape-последовательности в Bash echo и printf .

Как – если вообще – можно ли покрасить вывод, созданный awk как указано, на основе условия, которое может быть оценено внутри встроенного скрипта awk ?

NB: У меня есть mawk или gawk в моем распоряжении, mawk по умолчанию.

 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)}' 

Вы можете проверить терминал таким образом:

 > echo foo | awk '{if (system("tty >/dev/null 2>&1")) print "true"; else print "false";}' true