grep uma palavra-chave da saída do Mplayer e envia o resto para o arquivo

1

Estou usando o mplayer. Eu quero enviar tudo para um arquivo de log (/tmp/server.log), mas eu quero que a saída do volume seja gravada no terminal. Eu vi que há uma maneira de dividir a saída com tee, mas não consigo fazer isso funcionar. Isso é o que eu tenho até agora:

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

Eu quero que TODOS os stdout e stderr acessem o arquivo de log, mas apenas as linhas com Volume do stdout devem ser gravadas no terminal. Ou existe uma maneira melhor de fazer isso?

    
por MrUser 30.05.2014 / 11:58

2 respostas

2

Assumindo que você está usando bash e que "Volume" não é uma palavra que aparece no stderr:

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

Isso combina stdout e stderr do mplayer ( 2>&1 ), appends (observe as linhas -a to /tmp/server.log e grep para a palavra Volume .

    
por 30.05.2014 / 12:42
1

Tente isso. Assumindo bash

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

aqui estou primeiro anexando stderr ao arquivo e passando apenas stdout para tee e usando grep de lá.

Isto remove a hipótese de Volume do Anthon não em stderr. espero que isso ajude.

    
por 30.05.2014 / 13:30