Como removo o 'lixo' extra deste arquivo de log?

2

Estou tendo alguns problemas com arquivos de log do IIS 8.5 que desejo processar com o AWstats. Como meus servidores IIS estão atrás de um balanceador de carga, tive que adicionar um campo de log personalizado, X-FORWARDED-FOR. No entanto, isso acaba meio confuso nos arquivos de log:

2015-04-10 11:34:52 20000004f+OriginalIP+66.249.67.21+ HV-WEB-01 [etc]
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01  [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:06:49 20000004f+OriginalIP+2.150.2.19+ HV-WEB-01 [etc]

Eu não consigo segurar os caras / garotas do balanceador de carga agora, então por enquanto eu gostaria de consertá-lo rapidamente / sujo fazendo uma pesquisa / substituição que transforma todos esses '20000000f + OriginalIP + 10.20. 30,40+ entradas em '10,200,30 '.

Quem pode me ajudar com uma pesquisa / substituição (baseada em Linux) que pode fazer isso?

atualizado: aparentemente houve mais variações do que eu pensava originalmente ...

    
por Evert Meulie 10.04.2015 / 13:13

2 respostas

2

Isso cuida de tudo menos de um + :

sed 's/ [^+ ]*+*\([0-9.]*\)[,+]*/  /2' <<\IN
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 11:35:31 20000004f$OriginalIP+127.0.0.1,+136.243.19.46+ HV-WEB-01  [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:05:38 20000004f%OriginalIP+10.10.1.7,+89.221.243.229+ HV-WEB-01 [etc]
IN

Imprime ...

2015-04-10 11:35:31 127.0.0.1 136.243.19.46+ HV-WEB-01 [etc]
2015-04-10 11:35:31 127.0.0.1 136.243.19.46+ HV-WEB-01  [etc]
2015-04-10 21:05:38 10.10.1.7 89.221.243.229+ HV-WEB-01 [etc]
2015-04-10 21:05:38 10.10.1.7 89.221.243.229+ HV-WEB-01 [etc]

É porque os campos são agrupados nos caracteres que eu quero usar como delimitadores. É um pouco frustrante, para ser honesto. Mas facilmente corrigido:

sed 's/ [^+ ]*+*\([0-9.]*\)[,+]*/  /2;s/+ / /' <infile
    
por 11.04.2015 / 12:43
1

sed 's/20000000f+OriginalIP+\([0-9.]*\)+//' <yourlog >newlog

assumindo que yourlog é o log que você deseja modificar. O log modificado será armazenado em newlog .

    
por 10.04.2015 / 13:30