Use a opção -u
( --unbuffered
) do sed, para que ele grave sua saída, em vez de coletá-la primeiro para uma gravação rápida e grande depois.
cat fifo | sed -u 's/a/b/' | sed -u 's/b/c/'
cat
está sempre sem buffer.
Se não for sobre sed
, mas algum programa com buffer de saída, mas sem opções para desabilitá-lo, existem ferramentas que podem ajudar a forçar o buffer off - veja man unbuffer
e man stdbuf
.
Se for um script de shell, ele deve ser unbuffered por padrão: quando um comando cria uma saída no script e sai, a saída é liberada. Caso contrário, você usa unbuffer dentro do script de shell.
Para informações básicas, consulte esta visão geral do armazenamento de dados Stary .