ccze
是一个出色的日志着色器。问题是,尽管手册中有说明,但 /usr/lib64/ccze
或 $HOME/.ccze
中没有插件。看起来所有的插件都被编译成二进制文件(所以它们不是真正的插件)而且我不能轻易修改突出显示。
我想要实现什么?
我需要添加更多模式以红色突出显示。尤其是被空格包围的单个 0
。因为我不能轻易修改 ccze
我正在考虑将它与 grep 结合起来:
tail -f `/bin/ls -1td /var/log/updates/index_*.log` | ccze -A | grep --color '\| 0 '
但这不会产生任何输出(挂起?)尽管事实上:
tail -f `/bin/ls -1td /var/log/updates/index_*.log` | grep --color '\| 0 '
正确突出显示零和:
tail -f `/bin/ls -1td /var/log/updates/index_*.log` | ccze -A
正确突出显示其余部分。
提问时间
你能帮我修改上面的命令,让 ccze
和 grep
一起玩吗?或者只是如何自定义 ccze
- 无需重新编译,因此它可以正确突出显示新内容。
我不想看到的答案
- 你为什么不使用 multitail,它是如此完美?
- 为什么不使用任何其他库(它不是
ccze
的直接替代品)?
最佳答案
ccze
FAQ提到在某些系统上,“插件”实际上是“内置”的原因:存在一个 PCRE 编译错误,作者除了静态链接插件之外不知道如何修复。
因此,您在修改插件的工作方式方面一筹莫展,只剩下就地修改。但是...原位修改的问题是,一般来说,it's not possible to detect the current color, set a new one, then get back to that current color .
考虑:
ccze -A <httpd.log | sed "s/ 0 /$(tput setaf 2)&$(tput sgr0)/"
除了这会将匹配后的颜色重置为普通终端,这可能会破坏您想要的彩色输出。因此,您可能想要设置和重置颜色以外的其他内容,例如粗体、闪烁 或下划线。
考虑:
ccze -A <httpd.log | sed "s/ 0 /$(tput smso)&$(tput rmso)/"
这使“0”变为粗体。为了方便,我在这里使用tput
,你当然可以直接使用ANSI escape sequences .
关于linux - 结合ccze和grep?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39043472/