【问题标题】:`cat` analogue for highlighting different matches in different colors`cat` 类似物,用于突出显示不同颜色的不同匹配项
【发布时间】:2013-06-17 06:37:55
【问题描述】:

我的问题与此类似:Syntax highlighting/colorizing cat。但并不完全相同。

一个工具,这样做会很棒:

  • cat一个文件
  • 用颜色突出显示单词x cx
  • 用颜色突出显示单词y cy

等等。有人知道这样的事情吗?


对此的“现实动机”是:我有一个日志(例如由log4cxx 生成),我想用一种颜色突出显示DEBUGERROR 在另一个; WARN 在第三等等。

基本上,我想要实现的是:How to set colour of console output of log4cxx?

我想到了catgrep 之间的某种组合(带有自定义颜色)。但是外部工具也可以完成这项工作(如果存在)。

想法?


编辑: 谢谢,@sjngm!很好的建议。我对其进行了一些修改(现在可以用作alias,并且整行都被突出显示)。我决定发布我的修改,因为这可能对某人有用:

 # escaped ' ------------v;         light red ------vvvv;  red ------------vvvv;  yellow -------vvvvv;  green ---------vvvv;  brown ----------vvvv;  dark gray ------vvvv
 alias log_color='nawk '"'"'BEGIN { arr["FATAL"] = "1;31"; arr["ERROR"] = "0;31"; arr["WARN"] = "1;33"; arr["INFO"] = "0;32"; arr["DEBUG"] = "0;33"; arr["TRACE"] = "1;30"  } { l = $0; for (pattern in arr)     { gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); } print l; }'"'"
 alias log_error='grep "FATAL\|ERROR\|WARN"'

示例用法:

$ cat log_file | log_color
$ cat log_file | log_error | log_color

【问题讨论】:

标签: linux terminal grep syntax-highlighting log4cxx


【解决方案1】:

前段时间我做了类似的事情,也是为了一个日志文件,nawk

cat yourfile | nawk '
BEGIN {
    arr["EXCEPTION"] = "0;31";
    arr["\\[ERROR\\]"] = "1;31";
    arr["\\[WARN\\]"] = "0;31";
    arr["\\[INFO\\]"] = "1;34";
}
{
    l = $0;
    for (pattern in arr) {
        gsub(pattern, "\033[" arr[pattern] "m&\033[0m", l);
    }
    print l;
}'

配置部分应与您的x => cx 样式匹配,您也可以使用tail -f 代替cat

老实说,我认为没有工具可以解决它,因为它并不复杂。

【讨论】:

  • 不错!抱歉反应迟了,我完全忘记了这个问题:)
  • @KirilKirov 没问题,只要对你有用,我就可以:)
【解决方案2】:

在这里你会发现一个 sed-wrapper,它只接受颜色和图案作为命令行参数:

https://stackoverflow.com/a/13593327/1033410

(用法:cat yourfile | colorize.sh red ERROR yellow WARN blue 'user .* logged in')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多