该函数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 ...