ファイルにパイピングせずに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
どのコマンドが不要かを調べました。