Search code examples
awkgawk

How to print awk's results with different colors for different fields?


This file has 3 fields. I wanted e.g. the first 2 fields in green, and the third in white (NB : black background), so I tried :

awk '{print "\033[0;32m"$1"\033[0m", "\033[0;32m"$2"\033[0m", "\033[0;37m"$3"\033[0m"} }' chrono.txt

and everything was green…

How must I proceed (if it is possible) ?


Solution

  • To get color output from awk, you can use this approach.

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