【发布时间】:2022-10-15 19:55:18
【问题描述】:
目标
我想用 awk 迭代我的文件,它工作正常,但是当试图插入我的 COLOR 和 WHITE 变量时。
我意识到我必须首先在 awk 中初始化它
像这样的命令:-v COLOR="${COLOR}" 和 WHITE="${WHITE}"。然而,当我这样做时,我开始收到以下错误:
awk: warning: escape sequence `\e' treated as plain `e'
awk: cmd. line:1: WHITE=\e[1;37m
awk: cmd. line:1: ^ backslash not last character on line
awk: cmd. line:1: WHITE=\e[1;37m
awk: cmd. line:1: ^ syntax error
完整代码
bash.sh
WHITE="\e[1;37m"
COLOR="\e[1;31m"
awk -v COLOR="${COLOR}" WHITE="${WHITE}" awk -v COLOR="$COLOR" -v WHITE="$WHITE" '
{
system("sleep 0.1")
print " ("COLOR" NR "WHITE") " $0
}
' settings.tropx
settings.tropx 文件:
some setting
some other setting
set ting
another setting
最后
请解释这个错误指的是什么以及我如何解决它,谢谢!
【问题讨论】:
-
使用
\033而不是\e,例如WHITE="\033[1;37m"简单检查:awk 'BEGIN { color="\033[1;34m"; nocolor="\033[0m"; print color "hello" nocolor }-- 如果在 VT100 兼容终端上,将以 {蓝色} 打印"hello"。 -
这是给你的颜色检查
awk 'BEGIN { for (i=30; i<38; i++) { color="\033[1;"i"m"; nocolor="\033[0m"; print i " " color "hello" nocolor }}' -
完成颜色输出后,不要忘记输出
nocolor="\033[0m"以将输出重置为默认值。