Grep com comparação de strings: retorna somente linhas “maiores que” um timestamp

1

Eu tenho um arquivo de registro de e-mail que registra quando um e-mail foi enviado e para quem. Isso fica logrotado e, portanto, há uma mistura de arquivos de log zipados e descompactados de uma semana ou mais.

No momento, recebo de volta todas as linhas correspondentes a um e-mail específico com

sudo find /var/log/exim4/ -type f -exec zgrep -i "[email protected]" "{}" \; | sort

isso me devolve todos os e-mails enviados para [email protected] . Até aí tudo bem.

O que eu gostaria de fazer agora é receber todos emails enviados após um período específico, independentemente do destinatário. Isso deve ser simples (eu acho) porque todas as linhas do arquivo de log começam com um timestamp - elas têm este formato:

2015-04-20 18:01:05 H=(fake.org) [180.108.175.57] F=<[email protected]> rejected RCPT <[email protected]>: relay not permitted
2015-04-20 18:01:05 H=(fake.org) [180.108.175.57] F=<[email protected]> rejected RCPT <[email protected]>: relay not permitted
2015-04-20 18:06:33 H=(bar.net) [111.176.77.1] F=<[email protected]> rejected RCPT <[email protected]>: relay not permitted

Então, digamos que eu quero todos os e-mails enviados depois de "2015-04-20 18:03:00". Deve ser apenas um caso de obter todas as linhas que são "maiores que" meu timestamp. Como faço para modificar meu comando para isso? obrigado, Max

    
por Max Williams 28.04.2015 / 10:48

1 resposta

2

Como as datas estão em um formato em que a ordem cronológica é a mesma da ordem lexical, você pode simplesmente usar awk da seguinte forma:

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

Será produzido:

2015-04-20 18:06:33 H=(bar.net) [111.176.77.1] F=<[email protected]> rejected RCPT <[email protected]>: relay not permitted
    
por 28.04.2015 / 11:06

Tags