Estou executando o Nginx no Ubuntu com o formato de log 'principal' padrão, que produz uma saída como esta:
95.108.181.102 - - [11/Feb/2018:11:43:10 +0000] "GET /blog/ HTTP/1.1" 200 4438 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" "-"
Eu tenho um arquivo de log mestre que nunca gira, que eu uso com o GoAccess (software de análise/relatório de log). Desejo excluir linhas nesse arquivo com entradas de log com mais de 30 dias ou mais. Isso pode ser feito, de preferência com um bash one-liner?
Pretendo adicionar isso a um cronjob diário existente para produzir um relatório contínuo de 30 dias. Espero usar algo assim, mas não consigo fazer com que ele analise os logs corretamente:sed -i '/<magical-invocation-goes-here> --date="-30 days"/d' example.log
Solução GNU
awk
:Amostra
test.log
:test.log
Conteúdo final :