Filtre a saída do script e imprima-a na tela enquanto a redireciona para um arquivo

0

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

    
por Michail N 07.12.2017 / 13:51

1 resposta

1

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.

    
por 07.12.2017 / 14:53