tail -f grep 経由でパイプし、ファイルに出力せずにコンソールに出力します。

tail -f grep 経由でパイプし、ファイルに出力せずにコンソールに出力します。

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

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

それがなければうまくいきます-fが、-f必要なものはファイルに何も記録されません。コンソールに以下を出力します。

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

ファイルに正しく書き込むようにコマンドを受け取るにはどうすればよいですか?

答え1

GNUがある場合grep:

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

これによりすべての行が作成されますが、パフォーマンスが低下します。

または、より多くの出力が出るのを待ちます。プロセスを終了するには、そのtailプロセスを終了したら、終了する前にバッファをgrepフラッシュする必要があります。

答え2

grepが出力をバッファリングして、そうでないように見えますか?努力する:

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

関連情報