我希望能够跟踪服务器日志文件的输出,该文件包含以下消息:
INFO
SEVERE
Run Code Online (Sandbox Code Playgroud)
等,如果是SEVERE,则以红色显示该行;如果是INFO,则为绿色。我可以为tail帮助我执行此操作的命令设置什么样的别名?
假设我有以下文件:
$ cat test
test line 1
test line 2
line without the search word
another line without it
test line 3 with two test words
test line 4
Run Code Online (Sandbox Code Playgroud)
默认情况下,grep返回包含搜索词的每一行:
$ grep test test
test line 1
test line 2
test line 3 with two test words
test line 4
Run Code Online (Sandbox Code Playgroud)
传递--color参数 togrep将使其突出显示与搜索表达式匹配的行部分,但它仍然只返回包含该表达式的行。有没有办法grep输出源文件中的每一行,但突出显示匹配项?
我目前实现这一点的可怕黑客(至少在没有 10000+ 连续行且没有匹配项的文件上)是:
$ grep -B 9999 -A 9999 test test
Run Code Online (Sandbox Code Playgroud)

如果grep不能做到这一点,是否有另一个提供相同功能的命令行工具?我摆弄过ack,但它似乎也没有选择。
是否有一个命令可以突出显示文本中的某个表达式?
我正在寻找类似“搜索”功能的less,但在标准输出上输出普通文本,而不是less查看器。
例子:
$ cat test.txt | highlight "an"
Run Code Online (Sandbox Code Playgroud)
对于前景的距离Afgh有序撤出北约的IST的遭遇了两次挫折总统卡尔扎伊德国马克的关于美国军队DED限制的d的塔里布的暂停和谈。
它可以使用颜色或任何其他方式来突出指定的正则表达式。
我正在将一个grep命令的输出传输到另一个命令中grep。第一个grep是 using --color=always,因此第一个匹配项是彩色的。实际上,这意味着匹配包含在两个颜色代码之间,即\033[1;31m和\033[0m。
现在的问题是如果第二个模式是m,那么它匹配上一个匹配的颜色代码:
echo A B C | grep --color=always A | grep m
Run Code Online (Sandbox Code Playgroud)
同样,数字31也会匹配。
有没有办法解决?
我预计不用说我需要将火柴着色,因此摆脱--color=always对我来说并不是一个令人满意的解决方案。