web-dev-qa-db-ja.com

tail -fパイプを介してgrepをファイルに出力せず、コンソールに出力します

私は次のコマンドを使用しています

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

-fがなくても問題なく動作しますが、必要な-fがあれば、ファイルには何も書き込まれません。次のコンソールへの出力は問題ありません

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

コマンドをファイルに正しく書き出すには、何をする必要がありますか?

5
pyInTheSky

GNU grep

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

これは、パフォーマンスの低下のために、すべての行を書き込みます。

または、出力が増えるのを待ちます。プロセスを強制終了する場合は、tailプロセスを強制終了するだけで、grepが終了する前にバッファがフラッシュされます。

9
Matt

Grepはおそらく出力をバッファリングしていて、何もないように見せていますか?試してみてください:

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