【问题标题】:how to trim wipe output with sed?如何用 sed 修剪擦除输出?
【发布时间】:2011-01-13 00:21:56
【问题描述】:

我想用 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'

我做错了什么?

谢谢!

【问题讨论】:

    标签: sed


    【解决方案1】:

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

    演示:

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

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 1970-01-01
      • 2011-08-06
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多