例えば、以下のような場合、perlとsedで出力バッファリングされているので、いつまでたっても出力されない。正しく言えば、perlの出力バッファがフルになってからsedに渡され、sedのバッファがフルになった後に出力される。
$ perl -le 'while(1) {print ++$i; sleep 1;}' | sed -e "s%\(.*\)%: \1%" ^C
そこで、以下のように出力バッファをフラッシュするタイミングを制御する。perlではこうすることで行単位で出力バッファがフラッシュされ、sedの場合は-uオプションで適当にバッファがフラッシュされる。(おそらく行単位でフラッシュ)
$ perl -le '$|=1; while(1) {print ++$i; sleep 1;}' | sed -u -e "s%\(.*\)%: \1%" : 1 : 2 : 3 : 4 : 5 ^C