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을 로그 파일로 이동하고 싶지만 stdout의 Volume 줄만 터미널에 기록됩니다. 아니면 더 좋은 방법이 있나요?

답변1

사용 중이고 bash"Volume"이 stderr에 나타나는 단어가 아니라고 가정합니다.

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

이는 mplayer() 의 stdout과 stderr을 결합하여 추가합니다 ( 모든 행 에 대한 2>&1단어를 참고하세요 .-a/tmp/server.loggrepVolume

답변2

이 시도. 가설bash

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

stderr여기에서는 먼저 파일에 추가 하고 stdout거기에 전달 tee하고 grep을 사용합니다.

이는 볼륨이 stderr에 있지 않다는 Anthon의 가정을 제거합니다.

관련 정보