パイプがファイルに書き込まない [重複]

パイプがファイルに書き込まない [重複]

ファイルにパイピングせずにpingコマンドからファイルにミリ秒をインポートしようとしていますが、期待どおりに機能します。なぜ> to a fileが何も書かないのは少し混乱しています。

これは働きます:

ping 192.168.1.1 |egrep --line-buffered -v 'PING|timeout' |sed -l -e 's/^.* time=\(.*\) ms$/\1/g'

ping.datには何も書きません。

ping 192.168.1.1 |egrep --line-buffered -v 'PING|timeout' |sed -l -e 's/^.* time=\(.*\) ms$/\1/g' > ping.dat

私は何が間違っていましたか?

ベストアンサー1

各バッファは|stdio出力バッファとstdin入力バッファに囲まれています。ライブパイプラインを取得するには、どのようなものを閉じるべきかを探す必要があります。

これは私にとって効果的です。

ping localhost |egrep --line-buffered -v 'PING|timeout' |\
stdbuf -o0 sed -l -e 's/^.* time=\(.*\) ms$/\1/g' > file

最初は各コマンドを最初に入力し、次にstdbuf -i0 -o0どのコマンドが不要かを調べました。

おすすめ記事