awk
armazena em buffer o fluxo STDOUT, você precisa liberar o STDOUT, liberá-lo usando a função fflush()
do GNU awk
:
my_function_with_ouput | awk '!seen[$0]++ {print; fflush()}' | while ...
Se você não tiver gawk
, obtenha ajuda de stdbuf
, STDOUT sem buffer:
my_function_with_ouput | stdbuf -o0 awk '!seen[$0]++' | while ...
ou faça a linha STDOUT em buffer:
my_function_with_ouput | stdbuf -oL awk '!seen[$0]++' | while ...