有没有办法为通过以下方式接收(和过滤)的行添加前缀awk
- 是的,我知道那是到目前为止可能 - 然后有条件地(例如,基于$PS1
周围 Bash 脚本或变量的存在[ -t 1 ]
)使用 ANSI 转义序列为其着色?
我知道如何使用锚点以及其他两种或三种方式添加前缀,^
并且我知道如何在 Bashecho
和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