【发布时间】:2019-12-24 22:42:49
【问题描述】:
我正在旧版本的 Solaris 上编写脚本。列不存在。我想为字符串的第二列着色并将其格式化为基本列。
目前我正在使用
off='\033[0m'
gry='\033[1;90m'
line="test1 test2 test3 test4"
colored=$(echo -e "${gry}1.23${off}")
echo -e "${line}" | awk -F" " '{printf("%-10s%-10s%-10s%s\n", $1,coll,$3,$4)}' coll="${colored}"
但是在运行时,第二个彩色列将有第三个列压在它上面。 没有颜色代码,格式很好。
我认为这可能与零长度字符有关
off='\[\033[0m\]'
gry='\[\033[1;90m\]'
但这只是打印额外的括号。
我想要(带有颜色的第二列)
test1 1.23 test3 test4
test1 1.23 test3 test4
test1 1.23 test3 test4
但得到
test1 1.23test3 test4
test1 1.23test3 test4
test1 1.23test3 test4
【问题讨论】:
-
请将该示例输入的所需输出(无描述)添加到您的问题(无评论)。
-
只增加第二个字段的宽度说明符。使用 20 对我来说似乎相当不错。这些在终端上可能是零宽度,但 AWK 会计算它们。
-
更新示例
-
\[和\]代码特定于 Bash,并且仅在 Bash 提示符中真正有用。