web-dev-qa-db-ja.com

プログラムを制御しながら、grepを使用してプログラムの標準出力をフィルタリングするにはどうすればよいですか?

Mpvメディアプレーヤーの出力をフィルターして特定の行を削除しようとしていますが、その場合、キーボードでmpvを制御できません。コマンドは次のとおりです。

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

コマンドを実行すると、すべてが正しく表示されますが、LEFTおよびRIGHTキーを使用してファイルをスキャンしたり、キーボードで他のことを実行したりできません。プログラムの制御を保持しながら、プログラムの出力をどのようにフィルタリングしますか?

5
jaxuru

たとえば、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'

[編集:チェックアウト アプリケーションをだまして、その標準入力がインタラクティブであると思わせる 追加の解決策について]

5
remram

Nohup mpv FILEを使用できます。出力はNohup.outに書き込まれ、tailおよびgrepを使用してフィルターできます。

Nohup mpv FILE
tail -f Nohup.out |grep -v 'Error while decoding frame'
0
Lambert