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 unbuffer
comando 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 : unbuffer
está disponible en Cygwin desde el expect
paquete fuente (por ejemplo, expect-20030128-1-src.tar.bz2 , que se encuentra en la expect/examples
carpeta), pero es un script muy corto. Si ya tiene el expect
paquete instalado, simplemente colóquelo en un script llamado unbuffer
en su /usr/local/bin
directorio:
#!/usr/bin/expect --
# Description: unbuffer stdout of a program
# Author: Don Libes, NIST
eval spawn -noecho $argv
set timeout -1
expect
En Debian, el unbuffer
comando se proporciona en el expect-dev
paquete y se instala como expect_unbuffer
.