Use tee como este: command_with_huge_output | tee jobLog.log | grep 'LineYouWantToFind'
Assim, toda a saída padrão do command_with_huge_output irá para o jobLog.log e para o pipe para grep.
Eu criei um shell script simples onde eu imprimo algumas mensagens de saída e invoco um comando muito longo que gera um log muito longo. Eu redireciono o log gerado pelo comando em um arquivo chamado jobLog.log usando esta resposta. Então meu código é este:
#!/bin/bash
echo "Submiting a job to ...."
sudo command_with_huge_output > jobLog.log 2>&1 && echo "Job ended! Log at jobLog.log"
Eu quero redirecionar uma linha desse log para a tela. Quando o trabalho termina, eu uso o grep no arquivo como:
less jobLog.log | grep LineIwanttoFind
e isso retorna uma linha que estou interessada em imprimir enquanto o comando está em execução. Como posso filtrar a linha desejada e redirecioná-la na tela enquanto o comando está em execução? Claro que também quero enviar o log completo no arquivo jobLog.log.
Obrigado por qualquer sugestão
Tags logs shell-script