DTe*_*est 58
我不知道如何使用 awk 而不是 grep,但这对我有用:
tail -f file.log | grep -Ev '(ELB|Pingdom|Health)'
Run Code Online (Sandbox Code Playgroud)
编辑:正如dmourati和Caleb 所 指出的,为了方便起见,您也可以使用egrep
代替grep -E
。在某些系统上,这将是指向同一个二进制文件的链接,在其他系统中,它是由 grep 包提供的副本。无论哪种方式,它都可以作为-E
开关的替代品。但是,根据 GNU grep 手册页:
[...],两篇不同的方案
egrep
和fgrep
服务。egrep
与 相同grep -E
。fgrep
与 相同grep -F
。直接调用作为egrep
或fgrep
已被弃用,但提供以允许依赖它们的历史应用程序未经修改地运行。
由于它们是同义命令,因此除非您根本没有 egrep,否则它归结为偏好。然而,为了向前兼容,建议使用grep -E
语法,因为另一种方法已被正式弃用。
Cal*_*leb 21
尝试使用管道分隔的要过滤掉的单词列表将其传递给 egrep:
tail -f log_file | egrep -v 'ELB|Pingdom|Health'
Run Code Online (Sandbox Code Playgroud)
请注意,在匹配列表周围使用括号是可选的。由于|
grep 将 视为逻辑 OR 运算符,无论它是否作为子组的一部分出现。'(ELB|Pingdom|Health)'
功能完全一样。对于某些人来说,语法可能更明显;我发现没有输入更容易,因为我可以从单个匹配项切换到可能匹配项的列表,而无需返回添加括号。
值得一提的是multitail
,ninja foo 在过滤输出时确实如此。例如,您可以像这样过滤您的单词:
multitail -e ELB -e Pingdom -e Health -f log_file
Run Code Online (Sandbox Code Playgroud)
您还可以使用它对输出进行着色或以其他方式突出显示,而不仅仅是对其进行过滤。
编辑:请参阅DTests 答案和评论,以了解 egrep 如何只是一种已弃用的替代方式来触发grep -E
.