Pesquise pelas duas strings usando grep, extraia os números de linha da primeira correspondência e compare os valores.
-
A opção
- grep
-n
fornece o número da linha de todas as correspondências. - opção
-m1
lista apenas a primeira correspondência e sai. - por acaso, a opção
-F
fast grep - pode ser útil se não forem necessárias expressões regulares no cadeia de pesquisa.
Um exemplo de saída do erro grep será parecido com algo - o número da linha 235 deve ser extraído da saída.
235:[Wed Jun 04 12:23:19 2014] [error] child pid 6575 Segmentation fault (11)
Os números de linha podem ser extraídos excluindo a correspondência de substring mais longa %%:.*
da saída para deixar os valores numéricos que são comparados na instrução if.
er_match=$(tail -f output.log | grep -n -F -m1 --line-buffered "error")
ok_match=$(tail -f output.log | grep -n -F -m1 --line-buffered "success")
if [[ ${er_match%%:.*} - gt ${ok_match%%:.*} ]];then
echo "error first"
else
echo "sucess first"
fi