Bash 不断更新输出的重定向

Bash 不断更新输出的重定向,bash,redirect,Bash,Redirect,这个疯狂的bash调用应该能够提高我的ISP特定服务器的下行速度。 将pv输出输送至sed时出现问题。不是最后一个结果,而是第一个结果。管道不断更新输出时是否正常 for ((i=0;i<1;i++)) ; do echo DOWNLOAD $((2**30)) | nc ipv4.upcspeedtest.pl 10200 done | pv -f -a 2> >(tee >(cat >&2)) 1> /dev/null | sed -

这个疯狂的bash调用应该能够提高我的ISP特定服务器的下行速度。 将pv输出输送至sed时出现问题。不是最后一个结果,而是第一个结果。管道不断更新输出时是否正常

for ((i=0;i<1;i++)) ; do
    echo DOWNLOAD $((2**30))  | nc ipv4.upcspeedtest.pl 10200
done | 
pv -f -a 2> >(tee >(cat >&2)) 1> /dev/null | 
sed -r 's|\[ *([0-9]+).*|scale=3;print \1, "KiB/s\n", \1*8/1024, "Mib/s\n"|g' |
bc -l

顺便说一句,为了使这项工作顺利进行,我只需将pv的间隔增加到300秒。

好的。我明白了。当管道pv-a到sed'/s/\r//g'的输出看起来像这样[579kiB/s][486kiB/s][439kiB/s]。。。pv生成\r单独的记录列表。当管道pv到sed-r的|[[0-9]+.|\1 | g'sed采用第一马赫数时,忽略了pv产生的剩余输出。一切正常。
–Bartłomiej Szczepaniak

sed应该处理pv的所有输出,假设它是基于线路的,你确定不会发生吗?你是否等着看当它全部完成时会发生什么?管道/等可能会缓冲输入和输出。@EtanReisner sed对pv产生的载波返回有问题。好的。我解决了这个问题。当管道pv-a to sed'/s/\r//g'输出看起来像这样[579kiB/s][486kiB/s][439kiB/s]…pv产生\r单独的记录列表。当管道pv到sed-r's | \[*[0-9]+.*\1 | g'sed采用第一马赫,忽略pv产生的剩余输出。一切都按预期工作。