私はこれを持っています:
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}'
答え2
grep
これを使用して出力に色を割り当てることもできます。
env |grep cm_ |grep -o '^[^=]*=[^=]*' |GREP_COLORS="sl=1;36:ms=1;0" grep '[^=]*='