从 Mplayer 输出中 grep 一个关键字并将其余内容发送到文件

从 Mplayer 输出中 grep 一个关键字并将其余内容发送到文件

我正在使用 mplayer。我想将所有内容发送到日志文件 (/tmp/server.log),但我希望将卷输出写入终端。我已经看到有一种方法可以用 tee 分割输出,但我似乎无法让它工作。这是我到目前为止所拥有的:

$mplayer /path/to/song.wav 1>tee /tmp/server.log | grep Volume  2> /tmp/server.log

我希望所有 stdout 和 stderr 都转到日志文件,但只有带有 Volume from stdout 的行写入终端。或者有更好的方法吗?

答案1

假设您正在使用bash并且“Volume”不是出现在 stderr 上的单词:

 $ mplayer /path/to/song.wav 2>&1 | tee -a /tmp/server.log | grep -F Volume

这结合了来自 mplayer ( ) 的 stdout 和 stderr 2>&1,附加(注意单词 的-ato/tmp/server.log和的所有行。grepVolume

答案2

尝试这个。假设bash

$ mplayer /path/to/song.wav 2>> /tmp/server.log | tee -a /tmp/server.log | grep Volume

在这里,我首先附加stderr到文件并仅传递stdouttee那里并使用 grep 。

这消除了 Anthon 对 Volume 不在 stderr 中的假设。

相关内容