AWKを使用して色をエコーする方法

AWKを使用して色をエコーする方法

私はこれを持っています:

cm_env(){
 env | grep 'cm_' | while read line; do
    echo "$line" | awk -F'=' '{print $1 $2}'
 done;
}

次のように印刷したいと思います。

env_var1=this_is_in_blue
env_var2=this_is_in_blue_too
env_var3=this_is_colored_blue

これを行うには、AWK以外のものを使用する必要がありますか?

問題は、二重引用符が機能しないようです。

export cm_color_gray='\033[1;30m'
export cm_color_cyan='\033[1;36m'

cm_env(){
 env | grep 'cm_' | while read line; do
    echo "$line" | awk -F'=' '{print $1 $cm_color_cyan $2 $cm_color_no_color}'
 done;
}

私はこれを試しました:

echo "$line" | awk -F'=' "{print \$1 $cm_color_cyan \$2 $cm_color_no_color}"

しかし、私は次のようになります。

awk:1: 予期しない文字 '\'

awkを使ってこれを行う方法はありますか?

ベストアンサー1

色をawk変数として渡す必要があります。

env | awk -v b='\033[1;36m' -v r='\033[0m' -F= '/cm_/{OFS="="; print $1,b$2r}'

またはtputを使用してください:

env | awk -v b="$(tput setaf 6)" -v r="$(tput sgr0)" -F= '/cm_/{OFS="="; print $1,b$2r}'

おすすめ記事