Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 查看文件的实时日志,仅回显符合特定条件的行_Linux_Bash_Macos_Unix - Fatal编程技术网

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
is
tail
比输出最后十行做得更多。OP想要使用@绝地武士我知道,OP没有提到任何其他要求。@非常正确,因为我们有: