如何用sed修剪擦除输出?

时间:2011-01-12 15:06:16

标签: sed

我想用sed修剪擦除命令的输出。 我试着用这个:

wipe -vx7 /dev/sdb 2>&1 | sed -u 's/.*\ \([0-9]\+\).*/\1/g'

但由于某种原因它不起作用。

当我使用echo& sed打印擦除命令的输出它可以工作!

echo "/dev/sdb: 10%" | sed -u 's/.*\ \([0-9]\+\).*/\1/g'

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

这看起来像一个进度指标。它们通常直接输出到tty而不是stdout或stderr。您可以使用名为expectunbuffer)的source脚本或其他方法来创建伪tty。请注意,您可能需要过滤掉更多的垃圾,例如\r等。

演示:

$ cat foo
#!/bin/sh
echo hello > /dev/tty
$ a=$(./foo)
hello
$ echo $a

$ a=$(unbuffer ./foo)
$ echo $a
hello