7

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?

Anthon
  • 79,293

2 Answers2

13

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.

Matt
  • 8,991
1

Is grep buffering the output perhaps, making it appear like there is none? Try:

tail -f /mydir/myfile | grep --line-buffered "searchterm" >> outfile
foo
  • 336
  • 1
  • 2