shell scripting grepping para padrão e, em seguida, mensagem de eco

1

Eu tenho um arquivo que tem o padrão abaixo

=================================================

4601 -- it means completed
4602 -- it means failed
4603 -- it means timed out

=================================================

Se eu fizer o tail -10 para arquivar, então eu obteria qualquer padrão acima.

Eu quero ver acima de três números e, em seguida, exibir a mensagem como Concluído | Falhou | Tempo esgotado.

Alguma ideia?

Obrigado!

    
por maneeshshetty 25.02.2012 / 06:08

1 resposta

0

Aqui está um pequeno script que você pode usar para testes - execute-o em algum lugar seguro, por exemplo / tmp ou mais:

# Prepare
rm *.txt
echo 4601 -- it means completed > f1.txt
echo 4602 -- it means failed > f2.txt
echo 4603 -- it means timed out > f3.txt

# Test
for i in *.txt; do echo
  echo --- Processing file $i
  if grep -qs 4601 $i; then
    echo Completed
  elif grep -qs 4602 $i; then
    echo Failed
  elif grep -qs 4603 $i; then
    echo Timed-Out
  fi
done

Obrigado @grawity pela dica útil (veja o comentário dele abaixo) para não criar subshells / testes em execução desnecessários / acelerar isso aqui!

Ele criará 3 arquivos - f1.txt, f2.txt e f3.txt, cada um contendo um dos codificados mencionados e processando cada um dos arquivos, gerando as mensagens desejadas.

Espero que isso ajude.

    
por 25.02.2012 / 06:30