我正在尝试重定向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]
)但问题是放置“|”或“>”重定向它导致没有任何流到目标文件或管道。我想进一步处理这个输出,但我不知道为什么会这样,以及如何解决这个问题。有谁有任何线索?
答案 0 :(得分:0)
您正在stdout
与/dev/null
生根,然后尝试将其传递给tr
。此时输出已经丢失。摆脱> /dev/null
- 部分
答案 1 :(得分:0)
怎么样:
dd if=/dev/zero | pv -f -r 2> >(tr "\r" "\n") >/dev/null
编辑:
由于OP想要处理tr(stv的stderr)的输出,这可以帮助:
dd if=/dev/zero | pv -f -r 2>&1 >/dev/null | tr "\r" "\n" | your_process_command
它将stderr重定向到stdout& stdout到/ dev / null。因此带宽数据在stdout上,然后被送到tr。
EDIT2:
抱歉,编辑也无效。我会尽力找到更好的方法和更新它....