Как мне извлечь заголовок «Дата:» для последнего полученного сообщения в файле 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
Поскольку новые сообщения добавляются, ваши сообщения должны быть перечислены в порядке получения.