Назад | Перейти на главную страницу

Извлечение даты последнего сообщения из файла mbox

Как мне извлечь заголовок «Дата:» для последнего полученного сообщения в файле mbox?

Обратите внимание, что это не просто проблема поиска последнего появления «^ Date:» с помощью команды grep, поскольку это может быть дата из цитируемого ответа, а не фактически последнее полученное сообщение.

Так что, вероятно, потребуется какой-то правильный синтаксический анализ.

grepmail кажется, хорошо разбирается в mbox'ах с умом, однако я не могу найти способ решить с его помощью эту, казалось бы, тривиальную задачу.

Любой ввод?

Спасибо.

E: Хорошо, официально я толстый. ls -l mbox наверное, подойдет. Так что.

Тем не менее, меня бы очень заинтересовал более творческий подход.

grepmail -hH ^Date: /path/folder | grep ^Date: | tail -1

grepmail -hH ^Date: /path/folder: -h требует, чтобы совпадение было в заголовке, -H печатает только заголовки совпадающих писем (т. е. всех) ...

| grep ^Date:: из этих заголовков извлеките только Date: линии ...

| tail -1: и выведите только последний из них.

В качестве отправной точки вы можете сделать что-то вроде этого, чтобы найти From строка в начале последнего письма.

tac "$MAIL" | grep -m1 '^From '

Строка, начинающаяся с From указывает начальную точку письма в файле mbox. Он также содержит время, когда оно было получено, что обычно более надежно, чем любая другая метка времени, найденная в заголовках почты.

Если вы конкретно хотите Date заголовок, а не From строку, вы можете сделать что-то вроде этого:

tac "$MAIL" | awk '/^Date: / {print} ; /^From / {exit}' | tail -1

Это напечатает первую строку, начинающуюся с Date: в последней почте. Однако, если в заголовках последнего письма нет Date заголовок, он все равно может соответствовать содержимому, а не заголовку, поэтому вам нужно будет каким-то образом убедиться, что почта действительно имеет Date заголовок.

Поскольку вам нужно что-то, что понимает фактический формат mbox, канонический почтовый клиент mail или обычная более способная замена mailx приходить на ум.

mailx  -f /path/to/mbox -H 

Поскольку новые сообщения добавляются, ваши сообщения должны быть перечислены в порядке получения.