Извлечение даты последнего сообщения из файла mbox
Как мне извлечь заголовок "Дата:" для последнего полученного сообщения в файле mbox?
Обратите внимание, что это не просто проблема grep'ing для последнего вхождения "^Date:", так как это может быть также дата из цитируемого ответа, а не фактически последнее полученное сообщение.
Так что, возможно, потребуется правильный синтаксический анализ.
Похоже, чтоgrepmail хорошо разбирается в mbox'ах, однако я не могу найти способ решить эту, казалось бы, тривиальную задачу с его помощью.
Любой вклад?
Благодарю.
E: Хорошо, я официально толстый. ls -l mbox, вероятно, подойдет. Так что.
Тем не менее, я был бы очень заинтересован в более творческом подходе.
3 ответа
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
Поскольку новые сообщения добавляются, что должно перечислить ваши сообщения в порядке их получения.