1

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

Я в настоящее время (успешно) возвращаю все строки, соответствующие определенному письму с

sudo find /var/log/exim4/ -type f -exec zgrep -i "foobar@gmail.com" "{}" \\; | sort

это возвращает мне все электронные письма, отправленные на foobar@gmail.com . Все идет нормально.

Что я хотел бы сделать сейчас, так это получать все электронные письма, отправленные через определенное время, независимо от получателя. Это должно быть просто (я думаю), потому что все строки файла журнала начинаются с метки времени - они имеют такой формат:

2015-04-20 18:01:05 H=(fake.org) [180.108.175.57] F=<fake@fake.org> rejected RCPT <webmaster@charanga.com>: relay not permitted
2015-04-20 18:01:05 H=(fake.org) [180.108.175.57] F=<fake@fake.org> rejected RCPT <webmaster@charanga.com>: relay not permitted
2015-04-20 18:06:33 H=(bar.net) [111.176.77.1] F=<foo@bar.net> rejected RCPT <service@charanga.com>: relay not permitted

Итак, допустим, я хочу, чтобы все письма отправлялись после «2015-04-20 18:03:00». Это просто случай получения всех строк, которые «больше, чем» моя метка времени. Как мне изменить мою команду для этого? спасибо Макс

1 ответ1

2

Поскольку даты имеют формат, в котором хронологический порядок совпадает с лексическим порядком, вы можете просто использовать awk следующим образом:

yourcommand | awk '$0 >= "2015-04-20 18:03:00"'

Это выведет:

2015-04-20 18:06:33 H=(bar.net) [111.176.77.1] F=<foo@bar.net> rejected RCPT <service@charanga.com>: relay not permitted

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .