无法使用 awk 管道输出

无法使用 awk 管道输出

该函数awk '!seen[$0]++'打印输入管道中的新出现的情况。

但是我无法在后面添加管道。例如

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

不产生任何输出。

答案1

awk缓冲 STDOUT 流,您需要刷新 STDOUT,使用fflush()GNU 函数使其刷新流awk

my_function_with_ouput | awk '!seen[$0]++ {print; fflush()}' | while ...

如果你没有,可以使用无缓冲 STDOUTgawk来获取帮助:stdbuf

my_function_with_ouput | stdbuf -o0 awk '!seen[$0]++' | while ...

或者使 STDOUT 行缓冲:

my_function_with_ouput | stdbuf -oL awk '!seen[$0]++' | while ...

相关内容