Другое awk-решение:
$ gawk -F '\n *' -v RS="::=[^\n]*\n*" '{gsub(/[^0-9]/,"", RT); printf "%s\n%s\n", $4, RT}' foo
"Aspi: unable to read the file server hard disk might have problems"
124
"Aspi: database is corrupted"
125
Текст естественно делит на записи, но разделитель записей не очень прост. Это может быть две последовательные строки новой строки. Я решил использовать последнее поле в записи (::= ...), за которым следует сколь угодно много новых строк, в качестве разделителя записей.
Затем для разбиения на поля я использовал новую строку, за которой следует сколь угодно много пробелов , После этого это всего лишь вопрос о печати четвертого поля и извлечении чисел из текста разделителя записей (RT). Поскольку это решение использует RT, это GNU awk-only.