如何打印awk';不同字段的不同颜色的结果?

如何打印awk';不同字段的不同颜色的结果?,awk,gawk,Awk,Gawk,此文件有3个字段。例如,我希望前两个字段为绿色,第三个字段为白色(注意:黑色背景),因此我尝试: awk '{print "\033[0;32m"$1"\033[0m", "\033[0;32m"$2"\033[0m", "\033[0;37m"$3"\033[0m"} }' chrono.txt 一切都是绿色的 我必须如何进行(如果可能的话)?要从awk获得颜色输出,可以使用这种方法 function red(s) { printf "\033[1;31m" s "\033[0m "

此文件有3个字段。例如,我希望前两个字段为绿色,第三个字段为白色(注意:黑色背景),因此我尝试:

awk '{print "\033[0;32m"$1"\033[0m", "\033[0;32m"$2"\033[0m", "\033[0;37m"$3"\033[0m"} }' chrono.txt
一切都是绿色的


我必须如何进行(如果可能的话)?

要从awk获得颜色输出,可以使用这种方法

function red(s) {
    printf "\033[1;31m" s "\033[0m "
}

function green(s) {
    printf "\033[1;32m" s "\033[0m "
}

function blue(s) {
    printf "\033[1;34m" s "\033[0m "
}

{
    print red($1), green($2), blue($3)
}

使用awk函数的另一种方法是在shell变量中传递颜色。例如

RED='\033[01;31m'
GREEN='\033[01;32m'
YELLOW='\033[01;33m'
BLUE='\033[01;34m'
NONE='\033[0m'

echo "Col1 Col2 Col3 Col4" | \
awk -v r=$RED -v y=$YELLOW -v g=$GREEN -v b=$BLUE -v n=$NONE \
 '{printf r$1n y$2n g$3n b$4n "\n"}'

注意这些功能。它们使用外部字符串作为格式说明符。如果字符串包含格式字符(%)等,则将失败。最好使用类似于
函数red(string){printf(“%s%s%s”,“\033[1;31m”,string,“\033[0m”);}
我无法得到有效的答案,甚至这个建议也不行。但是下面的建议对我有效:
函数yellow(s){return“\033[1;93m”s”\033[1;39m}