awk将颜色代码添加到文本中

use*_*860 8 linux bash shell awk

awk -F: '{ printf  "%-3s %-2s","\n" $1 $2; }'
Run Code Online (Sandbox Code Playgroud)

我如何添加颜色代码?'\ E [1;32米'

我尝试添加到printf,它给我输出字符串而不是颜色代码..

'\e[1;32m' .......
Run Code Online (Sandbox Code Playgroud)

bar*_*rak 11

\033[?m 适当引用给出颜色:

awk 'BEGIN{ print "\033[34msomething in colour\033[0m";}'
Run Code Online (Sandbox Code Playgroud)

请注意以下内容需要如何发布$1:

echo something | awk '{ print "\033[34m"$1" in colour \033[0m";}'
Run Code Online (Sandbox Code Playgroud)


che*_*ner 9

awk不会将'\ e'识别为转义字符的代码.这是一种解决方法(可能存在更优雅的东西):

# Decimal 27 is the ASCII codepoint for the escape character
awk '{ printf "%c[1;32m foo\n", 27 }' <<<foo
Run Code Online (Sandbox Code Playgroud)

  • 如何...使用\ 033而不是\ e (5认同)

Edu*_*rdo 6

试试这个例子:

echo "line 1
line 2" | awk '/line/ {print "\033[32m" $1 "\033[31m" $2 }'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

颜色由 "\033[32m"

对于颜色:

30 - black   34 - blue          
   31 - red     35 - magenta       
   32 - green   36 - cyan          
   33 - yellow  37 - white     
Run Code Online (Sandbox Code Playgroud)