linux - 为尾部输出着色

标签 linux bash shell

我一直在努力使 tail 对于服务器启动来说更具可读性。我当前的命令从启动时过滤掉大部分 INFO 和 DEBUG 消息:

tail -F ../server/durango/log/server.log | grep -e "ERROR" -e "WARN" -e "Shutdown" -e "MicroKernel" | grep --color=auto -E 'MicroKernel|$'

我想做的是制作一些东西,以黄色突出显示 WARN,以红色突出显示 ERROR,并以绿色突出显示 MicroKernel。我尝试了多次管道 grep --color=auto,但唯一幸存的颜色是管道中的最后一个命令。

是否有一个类轮可以做到这一点?甚至是多线?

最佳答案

是的,有办法做到这一点。也就是说,只要你的终端支持 ANSI escape sequences 。这是现有的大多数终端。

我想我不需要解释如何使用 grep、sed 等。颜色对吗?

见下文,这将使

WARN yellow
ERROR red
foo   green

这里是例子:

kent$ echo "WARN
ERROR
foo"|sed 's#WARN#\x1b[33m&#; s#ERROR#\x1b[31m&#; s#foo#\x1b[32m&#'

注意:\x1bESC 字符的十六进制(^VEsc).

查看结果:

enter image description here

关于linux - 为尾部输出着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14691680/

相关文章:

windows - 使用 rsync 从 Windows 传输到 Linux

shell - 为什么我的 docker 在执行我的 shell 脚本后退出?

python - GSutil 使用跟踪器文件恢复下载

linux - 如何在 shell 脚本中进行比较?

linux - virtualhost:做 http 和 https 糟糕的浏览器呈现

linux - cron 作业查找文件并列出其输出(如果找到)

c - Getopt:与多个 optargs 一起使用的标志

linux - bash 和 ksh 之间的子 shell 差异

bash - 要检查 bash 脚本是以 root 还是以普通用户运行的?

linux - wget 失败,没有主机 wget 的路由