функция awk '!seen[$0]++'
распечатайте новые случаи во входном канале.
Я однако не могу добавить канал после. Например,
my_function_with_ouput | awk '!seen[$0]++' | while read j
do
echo $j
done
Не производит вывода.
awk
буферизует поток STDOUT, необходимо сбросить STDOUT, заставить его сбросить поток с помощью fflush()
функция GNU awk
:
my_function_with_ouput | awk '!seen[$0]++ {print; fflush()}' | while ...
Если Вы не имеете gawk
, возьмите справку от stdbuf
, освободивший буфер STDOUT:
my_function_with_ouput | stdbuf -o0 awk '!seen[$0]++' | while ...
или сделайте строку STDOUT буферизованной:
my_function_with_ouput | stdbuf -oL awk '!seen[$0]++' | while ...