Um método que não é particularmente adequado à tarefa, mas deve funcionar, é este:
- Remover LFs para que tudo apareça em uma única linha
- Mas coloque um LF após
</Alert>
para que todos os XMLs estejam em uma linha própria -
grep
para o código desejado - imprima a linha e limpe-a
Isso se traduz em:
tr -d "\r\n" < log_file \
| sed -e 's/\<?xml/\n&/g' -e 's/\<\/Alert>/&\n/g' \
| grep -F '<AlertID>mGMjhgHgffHhhFdH1u4</AlertID>'
Você pode até canalizar o resultado para xmllint --format -
para imprimi-lo bem.