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
的替代品)?答案 0 :(得分:0)
阅读手册,看起来你可以使用
-c, --color KEY=COLOR
Set the color of the keyword KEY to COLOR, like one would do in one of the configuration files.
您可能想尝试将0设置为KEY。
<强>更新强>
请忽略以上内容。
我弄清楚发生了什么。首先,这并不是悬而未决。这是因为你正在使用
tail -f
当您删除 -f 时,它将快速退出,并且grep不会返回任何内容。第二件事是你看到这种行为的原因。这是因为ccze使用ANSI颜色代码格式化输出。你可以用tee测试它,例如:
tail `/bin/ls -1td /var/log/updates/index_*.log` | ccze -A | tee my_log
当您打开 my_log 时,您会发现很多ANSI代码,例如我的文件包含:
| 0 Some message
然而,使用 tee ccze -A 日志:
^[[22m^[[36m|^[[0m^[[22m^[[36m ^[[0m^[[22m^[[37m0^[[0m^[[22m^[[36m ^[[0m^[[22m^[[36mSome^[[0m^[[22m^[[36m ^[[0m^[[22m^[[36mmessage^[[0m^[[22m^[[36m ^[[0m^[[0m
如您所见,不再有 | 0 字符串。这就是为什么grep什么都不返回的原因。如果你不想重新安装ccze,那么我就不会看到干净的解决方案,而是在你的grep命令中使用这个奇怪的模式。
更新2:
您也可以尝试使用sed:
tail `/bin/ls -1td /var/log/updates/index_*.log` | sed -e 's/| 0/\x1b[31m&\x1b[39m/' | ccze -A
但在我的情况下, ccze 更改了 0 的颜色。
还有一个配置文件:
/etc/cczerc
您可以更改数字的颜色等。
答案 1 :(得分:0)
ccze
FAQ提到了在某些系统上,&#34;插件&#34;实际上是#34;内置&#34;:有一个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)/"
带来了这个&#34; 0&#34;变成大胆的。为方便起见,我在这里使用tput
,您当然可以直接使用ANSI escape sequences。