私はsedの印象は、私が言うときので、ブロックされなかった持っていた。それが到着するようsedがブロックされていますか?
iostat | sed
sed
は、データを処理し、私はその後sed
ブロックnetcat
を
iostat | sed | netcat
を行うとき。
私は正しいですか?
私はsedの印象は、私が言うときので、ブロックされなかった持っていた。それが到着するようsedがブロックされていますか?
iostat | sed
sed
は、データを処理し、私はその後sed
ブロックnetcat
を
iostat | sed | netcat
を行うとき。
私は正しいですか?
sed
は端末に印刷しないときはバッファモードで動作します。これは、デフォルトで何らかの処理と出力を行う前に内部バッファを埋めるように試みることを意味します。
これは、パイプ内で通常タイミングを気にせず、できるだけ多くのデータを所定の時間内に処理したいので、スループットを向上させるために行われます。
をsedに渡すと、バッファされていない状態で動作するようになり、出力が端末に送られたときと同じように動作します。
私は右の質問を理解している場合、私は知らないが、あなたの例では、それはこのようにする必要があります。プロセスにsedのを待ちますiostatのデータ
それ以外の場合、sedは出力を生成するためにすべての入力を読む必要はありません。
これといくつかの小さなバッファリングでは説明できない遅延がありますか?
@sauaに加えて、sed
は少なくとも行指向であるため、行を読み込んでから操作して、常に少なくとも1行をバッファリングします。さらに、sed
は複数行モードでも動作します。複数のパターンを使用している場合、sed
は、パターンが適用されないか、またはパターンが処理されたことがわかるまで、現在のバッファを出力できません。
stdbuf
は、標準IOストリームのバッファリング動作の変更を支援できます。あなたは、バッファリング動作を変更するにはこれを試すことができます。
... | stdbuf -oL -eL sed -e ... | ...
:不正なオプション - U – CommaToast
@CommaToast:その後のsedのあなたの味は同等のオプションを持っている場合はGNUのsedのかを知る使用するか(と、ここでそれを投稿します答え、あなたがするとき)。 –
私のMacOSX compでは、 '-u'はありませんが' -l'は行バッファリングのために働きます。 – Umbrella