Quando ouço "Eu quero fazer X com o último algo no arquivo", eu acho:
- inverta o arquivo
- faça X com o primeiro algo no arquivo
- inverta a saída de X
no código:
tac logfile | awk '
BEGIN {text = "ERROR: transfer not complete by end of log file"}
/^Transfer completed successfully/ {text = ""}
{text = text ORS $0}
/^Transfer started at / {print text; exit}
' | tac
Como estamos lendo o arquivo de log de baixo para cima, começo assumindo que a transferência não está completa. Se eu vir a mensagem "transferência concluída", podemos descartar tudo o que capturamos até agora. Nós salvamos cada linha. Quando vemos a linha "transferência iniciada", sabemos que vimos toda a transferência última no arquivo: imprima o texto capturado (invertido) e saia do awk.