2011-01-12 11 views
0

sedでワイプコマンドの出力をトリミングしたい。 私はこの1つを使用してみてください:sedでワイプ出力をトリミングする方法は?

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

をそれが何らかの理由で動作しません。

私はエコー&を使用してワイプコマンドの出力を印刷するとうまく動作します。

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

何が間違っているのですか?

ありがとうございます!

答えて

1

これは進捗インジケータのようです。それらはstdoutやstderrの代わりにttyに直接出力されることがよくあります。 unbuffersource)などのスクリプトexpectなどのスクリプトを使用して疑似ttyを作成することができます。フィルタリングする必要があるかもしれない\rなどの迷惑メールが多分あることに注意してください。

デモンストレーション:

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

$ a=$(unbuffer ./foo) 
$ echo $a 
hello 
関連する問題