如何仅使用 Awk 尾随 -f 颜色输出并显示输出的其余部分?

如何仅使用 Awk 尾随 -f 颜色输出并显示输出的其余部分?

我能够tail -f使用该命令进行颜色输出awk。但我不确定如何输出日志的其余部分,因为它似乎只过滤那两行。我还想在写入日志时查看其他行。

我需要在命令中输入什么awk才能显示其余输出?

我的问题的图片。上面的红色文本没有使用awk并显示整个tail -f log.下面是与颜色过滤相同的命令awk

在此输入图像描述

答案1

不要用装饰来打印匹配线,而是装饰匹配线并打印所有内容:

awk '/User@Host:/ { $0 = "\033[32m" $0 "\033[39m" }; /Query_time:/ { $0 = "\033[29m" $0 "\033[39m" }; 1'

awk程序由三个模式和相关操作组成:

  • 匹配的行User@Host:用 处理$0 = "\033[32m" $0 "\033[39m",它用给定的转义码包围当前行;
  • 匹配的行Query_time:$0 = "\033[29m" $0 "\033[39m";处理
  • 模式1非零的行(因此所有行)都使用默认操作进行处理,即打印当前行。

这些是累积的:模式与当前行匹配的所有操作都按照定义的顺序执行。User@Host:修改行匹配(第一个操作)并打印(第三个操作)。Query_time:修改行匹配(第二个操作)并打印(第三个操作)。打印与两者都不匹配的行(第三个操作)。

这是打印所有行的最简单技术,无需跟踪一行是否已被处理(以避免打印一行两次)。我们不是在每组操作语句中打印某些内容,而是根据需要修改当前行,并且只打印一次(但始终打印它)。

相关内容