1

我正在尝试重定向 pv 命令的 stderr 并使用 tr 处理它,如下所示:

(dd if=/dev/zero | pv -f -r > /dev/null) 2>&1 | tr "\r" "\n"

(dd 只是一个例子),这段代码很好(输出就像

[ 189MB/s] 
[ 188MB/s] 
[ 186MB/s] 
[ 180MB/s]

) 但问题是放置“|” 或 ">" 重定向它不会导致任何流向目标文件或管道。我想进一步处理这个输出,但我不知道为什么会这样以及如何解决这个问题。有没有人有任何线索?

4

2 回答 2

0

您正在生根stdout/dev/null然后尝试将其通过管道传输到tr. 此时输出已经丢失。摆脱> /dev/null-part

于 2013-08-02T02:02:35.133 回答
0

怎么样:

dd if=/dev/zero | pv -f -r 2> >(tr "\r" "\n") >/dev/null 

编辑:

由于 OP 想要处理来自 tr (stderr of pv) 的输出,这可以帮助:

dd if=/dev/zero | pv -f -r 2>&1 >/dev/null | tr "\r" "\n" | your_process_command

它将标准错误重定向到标准输出,标准输出重定向到 /dev/null。因此带宽数据在标准输出上,然后被馈送到 tr。

EDIT2:
对不起,编辑也不起作用。我会尝试找到更好的方法并更新它....

于 2013-08-02T06:40:06.310 回答