Не может использовать вывод канала awk

функция awk '!seen[$0]++' распечатайте новые случаи во входном канале.

Я однако не могу добавить канал после. Например,

my_function_with_ouput | awk '!seen[$0]++' | while read j
do
echo $j
done

Не производит вывода.

6
задан 28 September 2016 в 04:25

1 ответ

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 ...
7
ответ дан 23 November 2019 в 07:42

Другие вопросы по тегам:

Похожие вопросы: