Eu inventei este oneliner desagradável (quebras de linha para legibilidade):
awk -F'[<>]' '($0 ~ /[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/) {time=$3}
($0 ~ /[0-9][0-9]\/[0-9][0-9]/) {date=$3}
($0 ~ /\[[0-9]+\]/) {tag=$3}
($0 ~ /Event 100 occurred/) { print date, time, tag, "Event 100 occurred"}' < testfile
Isso consistentemente coleta coisas que parecem uma hora, uma data ou uma tag ([12345]), e se uma linha como "Evento 100 ocorreu" ocorre, o conteúdo atual das variáveis é impresso. Essa é a saída desejada?