
daemonio
(usa Slackware)
Enviado em 02/10/2012 - 15:29h
Olá,
Se o arquivo de log segue o padrão passado (ex: após "Got auth msg" há sempre 6 linhas antes de um "Timeout") então é relativamente fácil fazer isso com o SED.
No caso, você pode fazer assim:
sed -n '/Got auth msg/,/Timeout/ {
# Obtém a data e hora
s/G.*//; h
# Obtem IP
s/Mac //; H
# Obtém usuário
s/User //; H
# Obtém site
n;
s/Redirect //; H
# Agora, formata a saída como:
# [DATA HORA]; MAC; USUÁRIO; SITE
x;
s/\n/;/g
p
# Descarta as outras linhas
n; n; n
}
' log.log
Ficou um pouco grande, porque analisei cada linha separadamente. O formato de saída é diferente do que você passou, mas fiz isso para facilitar, porém, com esse mesmo código, é fácil formatar do jeito desejado.
OBS: sei que o post é antigo, mas talvez seja de interesse para outras pessoas.
t+