Linux 查看文件的实时日志,仅回显符合特定条件的行
好的,假设我有一个名为Linux 查看文件的实时日志,仅回显符合特定条件的行,linux,bash,macos,unix,Linux,Bash,Macos,Unix,好的,假设我有一个名为system.log的文件,在这个文件中有数千行日志内容 在这些行中有几行我想看看 Jun 20 18:28:54 Wills-MacBook-Pro SpringBoard[75216]: MyApp initialized. Jun 20 18:28:54 Wills-MacBook-Pro SpringBoard[75216]: MyApp error on line 2 我想在控制台中看到它们,但不是 Jun 20 18:28:54 Wills-MacBook
system.log
的文件,在这个文件中有数千行日志内容
在这些行中有几行我想看看
Jun 20 18:28:54 Wills-MacBook-Pro SpringBoard[75216]: MyApp
initialized.
Jun 20 18:28:54 Wills-MacBook-Pro SpringBoard[75216]: MyApp error on
line 2
我想在控制台中看到它们,但不是
Jun 20 18:28:54 Wills-MacBook-Pro SpringBoard[75216]: SomethingElse initialized.
有点像
tail -f system.log (echo if MyApp in line)
这样做可能吗?是的,只需通过
grep
命令进行管道传输即可
tail -f system.log | grep MyApp
在这些行中有几行我想看看
那么您不应该使用tail
命令,因为它只输出最后10行。
解决方案是
cat system.log | grep MyApp
一个简单的grep管道就可以做到这一点 除了这里的其他答案之外,我建议使用
multitail
。
这很直观
下面是我如何使用它过滤出感兴趣的行,并将它们附加到一个新的日志文件中
multitail-e“MyApp”system.log
-e
用于正则表达式,后跟条件
此外,只需添加append标志,即可将所有匹配项保存到新文件中
multitail-a append_to_new_file.log-e“MyApp”system.log
你可以找到更多的例子,比如Cat不是像
tail那样自动更新的-f
istail
比输出最后十行做得更多。OP想要使用@绝地武士我知道,OP没有提到任何其他要求。@非常正确,因为我们有: