Eu tenho um arquivo de log que se parece com isso,
Another thousand lines above this
I 10/03/15 12:04AM 42 [Important] 4th to last
I 10/03/15 04:31AM 42 (534642712) [1974,2106,258605080,0,0,32817,30711]
I 10/03/15 04:33AM 42 (2966927) [91,0,2966927,0,0,291,291]
I 10/03/15 04:52AM 42 (3026559) [93,0,3026559,0,0,314,314]
I 10/03/15 04:55AM 42 (3065494) [94,0,3065494,0,0,301,301]
I 10/03/15 05:04AM 42 [Important] 3rd to last
I 10/04/15 12:04AM 42 [Important] 2nd to last occurence
I 10/04/15 04:31AM 42 (7,30711]55
I 10/04/15 04:33AM 42 dfsadfs,0,0,291,291]
I 10/04/15 04:52AM 42 (30,0,314,314]
I 10/04/15 04:55AM 42 (30,301]
I 10/04/15 05:04AM 42 [Important] - last occurence
O único padrão que permanece o mesmo em todo este arquivo é [Important]
, tudo muda, incluindo o número de linhas entre cada ocorrência de [Important]
Estou tentando pegar o final desse arquivo, ignorar a última ocorrência e encontrar o segundo para o último, depois extrair o conteúdo restante do arquivo para outro.
Isso é o que eu tenho tentado, mas não consegui destacar a segunda até a última ocorrência com tac. O que estou tentando ..
<logfile tac | sed '/Important/q' | tac > output_file
Isto é o que a saída deve parecer ..
I 10/04/15 12:04AM 42 [Important] 2nd to last occurence
I 10/04/15 04:31AM 42 (7,30711]55
I 10/04/15 04:33AM 42 dfsadfs,0,0,291,291]
I 10/04/15 04:52AM 42 (30,0,314,314]
I 10/04/15 04:55AM 42 (30,301]
I 10/04/15 05:04AM 42 [Important] - last occurence