busca padrão e exibe o último padrão de ocorrência?

1

Eu tenho um arquivo de log contendo startup e shutdown vezes para o everday.

Eu quero ver o último padrão para inicialização e desligamento (que está localizado no final do arquivo sendo atualizado todos os dias).

Além disso, eu não quero todas as linhas entre a inicialização e o desligamento. Quero apenas algumas linhas (digamos 3) após a última inicialização e algumas (digamos 3 linhas) após o último desligamento.

Alguma sugestão para um forro?

    
por munish 14.11.2011 / 07:37

2 respostas

3

Você pode usar uma combinação de sed e grep se não se importar em reverter as linhas (extraídas) do arquivo de log duas vezes (consulte Como posso reverter as linhas em um arquivo? ).

# test case
echo '
startup 1
shutdown 1
startup 2
shutdown 2
startup 3
line 1
line 2
line 3
line 4
line 5
shutdown 3
line 1
line 2
line 3
line 4
line 5
' | 
tail -r | sed -n -e '1,/startup/p' | tail -r | grep -E -A 3 '(startup|shutdown)'


# output
startup 3
line 1
line 2
line 3
--
shutdown 3
line 1
line 2
line 3
    
por 14.11.2011 / 12:22
2

tente usar o grep em vez do sed com a opção '- after-context'.

Exemplo:

cat logfile | grep --after-context=3 startup
    
por 14.11.2011 / 09:00