プログラムを制御しながら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できます。tailgrep

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

関連情報