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
- ,以便正确突出显示新内容。答案我不想看到
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/