Estou assistindo a um log e quero detectar uma vez que um programa teve 3 tentativas malsucedidas:
tail -f file.log | grep --line-buffered program\ failed\ string
Se a contagem de linhas grep
atingir 3, quero retornar um erro.
Como posso fazer isso?
awk é uma ótima ferramenta para escanear streams.
Presumi que deveria exibir todas as linhas para ver o log até sair, ao contrário do seu exemplo com grep que exibe apenas linhas de erro.
Você pode mover o código awk para tail.awk e chamar
tail -f file.log | awk -f tail.awk
se preferir.Equivalentemente, de uma forma mais compacta:
Apenas no caso de alguém preferir uma alternativa Python: