Probablemente sea un problema de almacenamiento en búfer. Vea esta publicación SO sobre cómo deshabilitar el almacenamiento en búfer automático cuando se usan tuberías . Puede usar el unbuffercomando desde expect:
$ unbuffer tail -f log.txt | egrep 'WARN|ERROR' | tee filtered_output.txt
Editar : dado que tiene una tubería más larga, es probable que necesite liberar el búfer de cada comando (excepto el último):
$ unbuffer tail -f log.txt | unbuffer egrep 'WARN|ERROR' | tee filtered_output.txt
Edición 2 : unbufferestá disponible en Cygwin desde el expectpaquete fuente (por ejemplo, expect-20030128-1-src.tar.bz2 , que se encuentra en la expect/examplescarpeta), pero es un script muy corto. Si ya tiene el expectpaquete instalado, simplemente colóquelo en un script llamado unbufferen su /usr/local/bindirectorio:
#!/usr/bin/expect --
# Description: unbuffer stdout of a program
# Author: Don Libes, NIST
eval spawn -noecho $argv
set timeout -1
expect
En Debian, el unbuffercomando se proporciona en el expect-devpaquete y se instala como expect_unbuffer.