将 tail -f 与 grep 结合使用?

use*_*730 27 linux grep tail

嗨,我想继续查看日志文件,但我也不想看到不相关的内容,我只对其中包含“foobar”的任何内容感兴趣。

所以如果我拖尾文件我会做

 tail file | grep "foobar"
Run Code Online (Sandbox Code Playgroud)

现在我添加了 -f 选项,有没有办法以某种方式只显示我想要的东西?使用 grep 或其他技术?

Rav*_*hol 43

你几乎写下了答案,那就是:

tail -f file.log | grep "foobar"
Run Code Online (Sandbox Code Playgroud)

就是这样。

  • 当 `grep` 是管道中的最后一行时,它的输出是行缓冲的,所以你会实时看到 `tail -f` 的过滤输出,而不是延迟。请注意,如果您要使用多个 `grep` 命令,任何输出通过管道传输的命令都需要一个 `--line-buffered` 选项(假设是 GNU 或 BSD grep)以保持这种行为。 (5认同)
  • 不,它将并行启动两个程序,第二个程序 (grep) 将在 tail 的 STDOUT 关闭后立即退出。这就是管道的全部意义,数据流:) (3认同)