我正在使用sort
和uniq
来处理脚本的输出,即
script | sort | uniq -c
在执行更多处理然后输出另外1000行之前,脚本以大约1000行的块输出数据。这些块是完全独立的。
对我来说,能够通过sort
和uniq
处理1000行的输出并将结果输出到控制台是有用的,然后再继续这个过程。
另一种表达方式是我希望sort
在处理1000行后清除它的缓冲区。这有可能吗?
答案 0 :(得分:3)
这样的事情应该做你想做的事情:
#!/bin/bash
while true; do
i=0
while IFS= read -r; do
printf "%s\n" "$REPLY"
if ((i >= 999)); then
break
fi
((i++))
done > >(sort | uniq -c)
if ((i==0)); then
# previous `while read` returned no lines. We're done.
break
fi
done | cat
每次从stdin读取最多1000行,并对每行1000行应用sort | uniq -c
。您可以使用以下内容:
./yourscript | ./read1000.sh > output.txt
在任何人请我使用无用的猫奖之前,如果输出将转到cat
,请sort | uniq -c
同步{{1}}进程替换的输出终端而不是重定向到文件或管道。