1. ホーム
  2. linux

[解決済み] 連続したストリームを「grep」する方法とは?

2022-03-24 23:59:52

質問

を使用することは可能ですか? grep を連続したストリームで使用できますか?

私が言いたいのは、ある種の tail -f <file> コマンドを使用しますが grep を出力して、興味のある行だけを残すようにしました。

試してみたところ tail -f <file> | grep pattern が、どうやら grep は一度しか実行できません。 tail が終了することはない、ということです。

解決方法は?

オンにする grep BSD grep (FreeBSD, Mac OS X など) を使用する場合、行バッファリングモードを使用します。

tail -f file | grep --line-buffered my_pattern

少し前のようです --line-buffered GNU grep (ほとんどのLinuxで使われている) では、デフォルトでフラッシュされるので問題ありませんでした (SmartOS、AIX、QNXなどの他のUnix-likeではYMMVです)。しかし、2020年11月現在では --line-buffered が必要です (少なくとも openSUSE の GNU grep 3.5 では必要ですが、以下のコメントから一般的に必要だと思われます)。