linux - 结合ccze和grep?

标签 linux bash grep pipe

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 

正确突出显示其余部分。

提问时间

你能帮我修改上面的命令,让 cczegrep 一起玩吗?或者只是如何自定义 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/

相关文章:

php - 为什么我的临时文件不可写入/tmp 文件夹 - linux 服务器(centos)

linux - 当我使用特定用户 SSH 登录树莓派时,它总是以 root 用户身份登录,而不是该用户身份

javascript - 在 bash 脚本中获取带有 javascript 元素的 HTML 页面

macos - 如何在 Mac 中创建批处理文件?

grep - 当 grep 多个文件时,如何在第一次匹配后停止?

c++ - connect() 中的 EHOSTDOWN 和 EHOSTUNREACH 是否致命?

python - 在 Docker 容器中运行 Disco

c - Bash 脚本中的流程控制和返回值

linux - 需要删除grep结果文件的前N行

hadoop - hadoop grep命令