Быстрый скрипт для вырезания раздела файла журнала на основе временной метки

Быстрый скрипт для вырезания раздела файла журнала на основе временной метки

Я ищубыстрый сценарийкоторый проанализирует большой mail.log и вернет частьмежду двумя указанными временными метками. Я хотел бы запустить его на всех моих почтовых серверах и скопировать соответствующие части журнала в центральное хранилище для дальнейшего анализа.

Я написал кое-что на bash, что работает, но медленно.

Кто-нибудь знает овсе, что уже существуетчтобы добиться этого — или мне нужно изучить Perl и придумать что-то самому?

(Я не выношу это на SO, так как я еще не на той стадии, когда хочуписатьлюбой код - просто ищу что-то, что уже использует кто-то другой)

решение1

Я люблю awk :)

Для моих журналов, которые имеют следующий формат:

Jul 14 12:49:10 xxxxxx sendmail[31337]: ...........

Я хотел бы использовать:

awk '$3 >= "12:00:00" && $3 <= "13:00:00" {print;}' < /var/log/maillog

Вероятно, вы можете адаптировать это по мере необходимости, например, если вы не делите бревна по дням.

Бонус:

Формат Apache, который у меня случайно оказался под рукой:

xxx.xxx.xxx.xxx - - [01/Jul/2009:03:06:24 -0400] "GET /favicon.ico HTTP/1.1" 200 3638
awk '$4 >= "[01/Jul/2009:03:00:00" && $4 <= "[01/Jul/2009:04:00:00" {print;}' < access_log

решение2

Для определенного диапазона дней и для печати > выходного файла

(Я не могу оставить комментарий к ответу выше, иначе я бы это сделал)

НТН

awk '$2 >= "21" && $3 >= "09:00:00" && $2 >= "21" && $3 <= "11:00:10" {print > "m_range.log";}' < /var/log/m.log

cat m_range.log 
...
Nov 21 09:00:17 mail postfix/qmgr[1694]: 1C50D276524A: from=<[email protected]>, size=2378, nrcpt=1 (queue active)
...

Связанный контент