[linux][bash] Como extrair string de um log

24 09 2013

Problema

Extrair uma string especifica de um log, no caso tudo entre <terminal> 1234 </terminal>

Solução

grep -oE "<terminal>([0-9]*)<\/terminal>" arquivo.log | cut -d'>' -f2 | cut -d'<' -f1

 

Passo a passo Solução

 

  • grep -oE “<terminal>([0-9]*)<\/terminal>” arquivo.log
    • -E –> indica que será utilizado expressão regular
    • -o –> mostrar apenas o dado da expressão

Saida do grep

<terminal>20611143</terminal>
<terminal>20611143</terminal>
<terminal>20611143</terminal>
<terminal>20611143</terminal>

  • cut -d’>’ -f2
    • -d’>’ –> determina que o delimitador vai ser ‘>’
    • -f2 –> indica para buscar a sequencia após o caractere de corte

Saida do cut

20611143</terminal>
20611143</terminal>
20611143</terminal>
20611143</terminal>
20611143</terminal>

  • cut -d'<‘ -f1
    • -d’>’ –> determina que o delimitador vai ser ‘<‘
    • -f1 –> indica para buscar a sequencia antes do caractere de corte

Saida do cut

20611143
20611143
20611143
20611143
20611143

 

Obs: para finalizar se desejar pode-se utilizar o comando abaixo para fazer um ordenamento e remover os terminais repetidos

|  sort -unb

Anúncios

Ações

Information

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: