Retorna parte da string no arquivo de texto

0

Histórico:

Todos os logs vão para csv para importação de mysql.

Tenha muitos registros com dados como:

Moon,Srv-1,2016-04-04 06:59:48,Entry #103 (s) test (AlphaNum_Need_This_32_Char_Long1),Msg On (ref2357 : Act)
Moon,Srv-2,2016-03-04 06:59:48,Entry #2  SomeLongtest (AlphaNum_Need_This_32_Char_Long2),Msg On (ref2357 : Act)

Problema:

  1. Como extrair:

    AlphaNum_Need_This_32_Char_Long1
    AlphaNum_Need_This_32_Char_Long2
    

ou

  1. Descarte a parte Entry #103 (s) test .

    = > O problema, este texto pode variar muito em comprimento e caracteres com alfa, num, ( { } [ ] ( ) / \ . < ># @ _ -

Progresso atual:

  • Pode extrair todos os outros campos com sed e awk .
  • No Excel, isso resolveria o problema {onde o texto é D4}:

    =MID(D4,SEARCH("),",D4)-32,32)
    

Usado MS Logparser até agora, inverteu a string, procure contar os 32 caracteres etc.

Meta: Não use o logparser do Windows, faça tudo no Linux.

    
por fun6utzi 05.04.2016 / 00:01

2 respostas

1
sed -r 's/^.*\((.{32})\).*$//' filename
    
por 05.04.2016 / 00:16
0

No Perl, você pode contar os caracteres da direita se você usar um índice negativo:

perl -aF, -lne 'print substr $F[3], -33, 32' < input
  • -n lê a linha de entrada por linha
  • -a divide a entrada na matriz @F
  • -F especifica o que dividir
  • -l adiciona novas linhas às impressões
por 05.04.2016 / 00:19