• ベストアンサー

tail -f の出力に|(パイプ)を2回

tail -f の出力への|(パイプ)を2回行ったものの結果が出力されず困っています。 具体的には、下記のようなコマンドを実行しています。 tail -f hoge.txt | sed -e 's/aaaa//g' | grep 'moge' 2個目のsedのみにすれば問題なく出力されるのですが、最後のgrepを行うと何も出力されなくなってしまいます。(sedの結果がgrepに渡れば必ず出力されるはずのもの) |(パイプ)の仕組みの理解が曖昧な気がしているのですが、なぜこうなってしまうのかがわかる方がいらっしゃれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

バッファリングされているためでは無いですかね。 grep --line-buffered としてみてください。 まあ、お書きのコマンドなら、これと同じです。 tail -f hoge.txt | sed -n '/moge/s/aaaa//gp'

maenoina
質問者

お礼

どちらの方法でもできました。ありがとうございます! バッファリングについては理解できてないので、調べてみることにします。。

関連するQ&A