Saída Grep do aplicativo, mostrar na tela e gravar no arquivo?

Saída Grep do aplicativo, mostrar na tela e gravar no arquivo?

Eu executo um aplicativo e canalizo a saída para grep. Isso funciona. No entanto, desejo mostrar a saída na tela e gravar no arquivo.

Então estou canalizando o grepresultado para tee:

./app | grep something | tee file.txt

No entanto, isso não mostra (ou escreve) resultados, mesmo quando há 100% de resultados (confirmei isso com duas instâncias em execução).

Como faço o grep na saída do aplicativo, gravo no arquivo e mostro na tela?

Responder1

O comando, como você escreveu, deve funcionar. Pode haver vários motivos para o funcionamento incorreto do comando.

  1. O aplicativo envia o texto de saída para outra saída diferente do padrão.
  2. A cadeia de caracteres para pesquisa com o comando grep foi inserida incorretamente.

Solução do caso #1

  1. Verifique manualmente se o aplicativo envia o texto desejado para a saída a ser pesquisada../app
  2. Redirecione o texto de saída para um arquivo ./app > file.txte verifique o conteúdo do arquivo:cat file.txt
  3. Se o arquivo não contiver o texto desejado, é provável que o aplicativo envie a saída para a saída de erro, em vez da saída padrão. Então tente redirecionar para um arquivo de uma maneira diferente
    ./app 2 > file.txte verifique o conteúdo do arquivo novamente:cat file.txt
  4. Se o conteúdo do arquivo estiver correto desta vez, a solução é fácil. Você só precisa redirecionar a saída de erro para a saída padrão.
./app 2>&1 | grep "something" | tee file.txt

Solução do caso #2

  1. Verifique cuidadosamente a sequência de caracteres que você está usando como padrão de pesquisa. Coloque-o entre aspas ou apóstrofos para excluir interpretações errôneas aleatórias de caracteres curinga, variáveis ​​$variablename, expressões regulares, etc.
  2. Comece testando a pesquisa usando o grep para strings muito simples compostas apenas por letras ou números que não podem ser mal interpretadas.

informação relacionada