Como Grep até um certo caractere ou String

2

Eu preciso extrair dados de log de muitos terrabytes de arquivos de log. O problema é que os dados que preciso começam e terminam com padrões que eu posso identificar, mas o código entre pode ser qualquer coisa entre 10 e mais de 100 linhas.

Exemplo:

Start
# lots of lines here
End

Atualmente, o que eu faço é grep -A 50 "Start" , o que me dá o início e as 50 linhas a partir de então. No entanto, em quase todos os casos, é mais ou menos do que eu preciso. Mais significado o arquivo de relatório resultante cresce Gigabytes maior do que precisa ser e menos significado eu não recebo as informações que eu preciso.

Existe uma maneira de extrair exatamente o que eu preciso, usando ferramentas padrão Unix / Linux?

    
por Sean Patrick Floyd 08.04.2013 / 16:12

1 resposta

3

Experimente com o awk:

awk '/^Start/,/^End/' file

ou se preferir sed:

sed -n '/Start/,/End/p' file
    
por 08.04.2013 / 16:24