Script shell para formatar logs

0

Requisito: preciso escrever um script para descobrir para qual API a solicitação foi enviada, mas nenhuma resposta foi recebida. Dada a seguir é um exemplo dos logs que eu vou trabalhar com.

2014-02-28 12:06:16|information|request|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|response|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|request|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|response|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|***request***|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|request|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|response|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|request|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|response|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|***request***|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|request|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|response|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|request|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293
2014-02-28 12:06:16|information|response|HTTP|API|FROM|TO|240020101281402281736160035001||||78587597|9897968976|23425511000123293

Como visto nos logs de ablove, em alguns casos, apenas a solicitação é recebida, mas não há resposta. Como posso imprimir apenas as linhas para as quais a resposta não é recebida. ????

    
por Manick Mehra 28.02.2014 / 12:29

2 respostas

1

Você substitui request e response pela mesma sequência para que as linhas pertencentes umas às outras se tornem iguais. Então você procura por linhas simples. Se a linha de resposta puder ocorrer mais tarde, você deverá ordenar as linhas antes desta verificação:

awk -F\| -v OFS=\| '{$3="x";print;}' file | uniq --unique

ou

awk -F\| -v OFS=\| '{$3="x";print;}' file | sort | uniq --unique
    
por 28.02.2014 / 12:46
0

cut também pode ser seu amigo

cut -d'|' -f3 vai te dar o terceiro campo, o -f significa campo, começando com 1 à esquerda (eu sei, sacrilégio em computadores) enquanto o -d é o delimitador que será usado para separar os campos. De lá você pode canalizá-lo para o que você quiser, se você quiser a última linha, você pode canalizá-lo através de tail -n1 e assim por diante

    
por 28.02.2014 / 17:03