awk 的彩色输出

Output of awk in color

我正在尝试在我新安装的 Arch 系统上设置 polybar。我知道很少 bash 脚本。我才刚刚开始。如果这不是本论坛的合适问题,我很乐意将其删除。我想获得以下 awk 颜色输出:

sensors | grep "Package id 0:" | tr -d '+' | awk '{print }'"

我知道如何使用 echo 执行此操作,所以我尝试传递输出,以便使用 echo 命令将其呈现为彩色:

sensors | grep "Package id 0:" | tr -d '+' | awk '{print }' | echo -e "\e[1;32m ???? 3[0m" 

我想在 ??? 所在的位置放置适当的信息。

awk output只是一个温度,像这样:50.0°C

edit:事实证明,有一种非常简单的方法可以将颜色传递给 polybar 中 bash 脚本(甚至 python 脚本)的输出。但是我仍然对为什么答案中建议的解决方案在终端中有效但在 polybar 模块中无效仍然感到困惑。我有几个使用脚本没有问题的自定义模块。

使用awk

$ sensors | awk '/Package id 0:/{gsub(/+/,""); print "3[32m""3[0m"}' 

如果还是不行,你可以试试这个方法;

$ sensors | awk -v color="$(tput setaf 2)" -v end="$(tput sgr0)" '/Package id 0:/{gsub(/+/,""); print color  end}' 

这是您要捕获 awk 输出的地方。由于 awk 可以做 grep 和 tr 做的事情,我已经将管道集成到一个 awk 调用中:

temp=$(sensors | awk '/Package id 0:/ {gsub(/\+/, ""); print }')
echo -e "\e[1;32m $temp 3[0m"