Você não o vê em tempo real porque, para fins de eficiência, os pipes são armazenados em buffer. tail -f
tem que preencher o buffer, normalmente 4 kB, antes que a saída seja passada para awk
.
Uma correção é usar o comando unbuffer, que faz parte do pacote expect:
unbuffer tail -f logfile.log | awk -F" " '{print $1, $2, $7, $8}'
Isso engana tail
ao pensar que está escrevendo para um terminal interativo. Como resultado, ele não armazena em buffer.
Para mais informações, consulte link
Alternativamente, se você tiver o GNU coreutils 7.5 ou melhor, você pode desabilitar o buffer de saída com o comando stdbuf:
stdbuf -o0 tail -f logfile.log | awk -F" " '{print $1, $2, $7, $8}'