2011-01-12 97 views
0

我想用sed修剪擦除命令的輸出。 我嘗試使用此一:如何用sed修剪輸出?

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

,但它不出於某種原因。

當我使用回聲& sed打印擦除命令的輸出它的工作原理!

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

我做錯了什麼?

謝謝!

回答

1

這看起來像一個進度指示器。它們通常直接輸出到tty,而不是stdout或stderr。您可以使用名爲unbuffersource)的expect腳本或其他一些方法創建僞tty。請注意,您可能需要過濾掉更多垃圾,例如\r等。

示範:

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

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