roncelio
(usa Outra)
Enviado em 14/02/2016 - 13:47h
Olá galera, estou precisando de mais um help de vcs,
É o seguinte, eu tenho um arquivo com 100 mil linhas onde tenho que retirar desse arquivo apenas 3 informações. Eu consegui fazer o script trazer apenas as minhas informações usando a função -F"". porém gostaria de saber se tem outra forma de procurar um valor entre caracteres conforme uma linha do arquivo abaixo.
{0x00003118} 2016-01-13 21:45:42,667; INFO ; Flash::Constants::ReturnCode __cdecl Flash::FlashMessageHandler::handleFixMessage; Fix message has been sent (routed in 324 microseconds). ClOrdID(11)=00000002201601131230002000000024177 Destination Fix Gateway and session=SMPISO01.IN_SMPISO01_ALC_REP Correlated source message: MsgSeqNum(34)=24179, SenderCompID(49)=Q00000220, TransactionID=bb901c12-ba4f-11e5-80cc-001b215ac758
Onde preciso extrair os seguintes valores:
(routed in 324 microseconds)
ClOrdID(11)=00000002201601131230002000000024177 Destination
Resultado espoeradp = 324
Resultado espoeradp= 00000002201601131230002000000024177
Saída:
324;00000002201601131230002000000024177
Usando separador deu certo mas queria outra forma de fazer isso porque usando o separador meu script fica muito grande e a idéia é deixa-lo menor e também ampliar o conhecimento.
Segue o scrpt que fiz para esse arquivo:
awk '/Fix message has been sent/,/session=/' ./FlashBorda/FlashKernel.log* | awk '/Fix message has been sent/{if (x)print x;x="";}{x=(!x)?$0:x";"$0;}END{print x;}' | awk -F";" '{print $0 "@@" substr($1,13,24)}' | awk -F"routed in " '{print $2}' | awk -F" " '{print $0 "@@" $1}' | awk -F"ClOrdID" '{print $0 "@@" substr($2,6,35)}' | awk -F@@ '{print $2 ";" $3 ";" $4}' >> LogFlashborda.csv;
Desde já agradeço a atenção de todos,
Att,
Rogério Vieira