multitail
有一个很好的基于正则表达式的过滤机制,在联机帮助页和在线手册中进行了描述。两个来源都表明可以使用开关从输出中排除与给定正则表达式匹配的日志行-ev
:
multitail -ev "ignorelinescontainingthis" /var/log/whatever.log -ev "alsoignorethis" /var/log/another.log
然而,这似乎不适用于过滤使用通配符传递的许多日志文件:
multitail -ev "thisdoesntwork" /var/log/myservice*.log
有办法让它发挥作用吗?
出于分析目的,我尝试了-ec
开关(突出显示正则表达式匹配),结果发现过滤器仅应用于通配符列表中的第一个文件,但没有应用于其他文件。
答案1
将我的评论变成答案。
的手册页multitail
该选项定义-e
如下:
-e
对以下内容使用下一个正则表达式文件。
因此正则表达式过滤器仅适用于紧随其后的文件。使用 shell glob 时,这将导致过滤器仅应用于扩展文件列表中的第一个文件。
要在所有文件中应用正则表达式过滤器,-E
必须使用以下选项:
-E
对以下内容使用下一个正则表达式文件。
该-v
选项否定指定的正则表达式,对于这些选项中的任何一个都应该以相同的方式工作。