Dividir arquivo de log por intervalo de tempo

3

Eu tenho um arquivo de log e gostaria de cortá-lo em cópias de 15min. No arquivo de log, as linhas começam com:

dd mmm yyyy hh:mm:ss,xxx 

por exemplo,

12 Feb 2013 16:05:02,xxx log text...

e o arquivo gira a cada hora, então eu gostaria de fazer uma cópia do arquivo de log, dividi-lo em 15min de log e dizer 4 arquivos de log.

    
por user32344 14.02.2013 / 04:38

2 respostas

1

AWK:

cat input |
    awk -F ':' '{if ($2 < 15) {print $0 > "15.log"} else print}' |
    awk -F ':' '{if ($2 < 30) {print $0 > "30.log"} else print}' |
    awk -F ':' '{if ($2 < 45) {print $0 > "45.log"} else print}' |
    cat > 60.log
    
por 03.05.2014 / 21:29
0

Se todas as linhas estiverem formatadas corretamente,

awk -F: '{print >int($2/15)*15 ".log"}' inputfile

produzirá o arquivo 0.log, 15.log, 30.log e 45.log.

Ele funciona dividindo-se usando dois pontos como o delimitador, portanto, o segundo campo de dd mm yyyy hh:mm:ss,xxx é mm . Nós dividimos isso por 15, pegue a parte inteira e multiplique por 15 para obter o valor de mm no início do quarto de hora. Em seguida, anexamos a string ".log" . Em seguida, informamos ao awk para imprimir a linha atual para esse arquivo.

    
por 28.10.2016 / 09:21

Tags