나는 이것을 가지고있다:
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 '[^=]*='