标签: 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'
我做错了什么?
谢谢!
答案 0 :(得分:1)
这看起来像一个进度指标。它们通常直接输出到tty而不是stdout或stderr。您可以使用名为expect(unbuffer)的source脚本或其他方法来创建伪tty。请注意,您可能需要过滤掉更多的垃圾,例如\r等。
expect
unbuffer
\r
演示:
$ cat foo #!/bin/sh echo hello > /dev/tty $ a=$(./foo) hello $ echo $a $ a=$(unbuffer ./foo) $ echo $a hello