2012-01-29 159 views
3

如果我执行重定向grep的输出到文件

$ java -jar selenium-server.jar 2>&1 | grep "jetty.Server" 

我得到的,一段时间后,输出我想到:

$ 16:30:24.881 INFO - Started [email protected] 

但我我尝试grep的输出重定向到一个文件,它不写东西

$ java -jar selenium-server.jar 2>&1 | grep "jetty.Server" > /tmp/ebook_selenium 

任何想法为什么?谢谢

+5

你看到java进程退出后的输出吗?只是一个猜测,但也许grep在写入'stdout'而不是写入文件时刷新其输出。编辑:你可以使用grep -line-buffered来强制grep输出每一行。 – 2012-01-29 15:40:26

+0

nope,它不写东西 – pistacchio 2012-01-29 15:40:57

+0

,但你的猜测是正确的,线 - 缓冲解决了这个问题。感谢您向我展示正确的方向。 – pistacchio 2012-01-29 15:42:48

回答

5

我们发现grep在写入stdout而不写入文件时刷新了其输出。

grep --line-buffered将强制grep在处理每行时输出。

+0

非常感谢!这解决了我的问题,将顶部输出重定向到一个文件:D – Nagel 2012-06-19 17:22:01

+0

很高兴它有帮助。 – 2012-06-20 20:03:13