Grep – Tail -f Piped Through Grep Not Outputting to File

grepstdouttail

I'm using the following command

tail -f /mydir/myfile |  grep "searchterm" >> outfile

Without the -f it works fine, but with the -f, which I need, nothing is written to the file. The following outputs to the console just fine

tail -f /mydir/myfile |  grep "searchterm"

What do I need to do in order to get my command to correctly write out to a file?

Best Answer

If you have GNU grep:

tail -f /mydir/myfile |  grep --line-buffered "searchterm" >> outfile

Which will write every line, for a performance penalty.

Alternatively, wait for more output. If you're killing the processes, just kill the tail process and the buffer should flush before grep exits.

Related Question