Eu criei um script de shell simples onde 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 é esse:
#!/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 deste log para a tela. Quando o trabalho termina, eu uso grep no arquivo como:
less jobLog.log | grep LineIwanttoFind
e isso retorna uma linha que estou interessado em imprimir enquanto o comando está em execução. Como posso filtrar a linha que desejo e redirecioná-la na tela enquanto o comando está sendo executado? Claro que também quero enviar o log completo no arquivo jobLog.log.
Obrigado por qualquer sugestão
Use camisetas assim:
command_with_huge_output | tee jobLog.log | grep 'LineYouWantToFind'
Portanto, toda a saída padrão do command_with_huge_output irá para o jobLog.log e para o pipe para grep.