如何通过 grep 过滤程序的标准输出,同时仍然控制程序?

如何通过 grep 过滤程序的标准输出,同时仍然控制程序?

我正在尝试过滤 mpv 媒体播放器的输出,删除特定的行,但是当我这样做时,我无法使用键盘控制 mpv。这是命令:

mpv FILE | grep -v 'Error while decoding frame'

当我运行该命令时,所有内容都显示正确,但我无法使用向左键和向右键扫描文件,或使用键盘执行任何其他操作。如何在保留对程序的控制的同时过滤程序的输出?

答案1

您可以使用 script(1) 程序为 mpv 提供一个假终端,例如:

script -c 'mpv FILE' /dev/null | grep -v 'Error while decoding frame'

对于 Mac OS X,语法似乎是:

script /dev/null mpv 'FILE' | grep -v 'Error while decoding frame'

[编辑:另请查看欺骗应用程序认为其标准输入是交互式的如需其他解决方案]

答案2

您可以使用nohup mpv FILE。输出被写入,nohup.out您可以使用tail和进行过滤grep

nohup mpv FILE
tail -f nohup.out |grep -v 'Error while decoding frame'

相关内容