poulis
(usa Red Hat)
Enviado em 29/08/2018 - 18:32h
Senhores,
preciso fazer a leitura de um arquivo que pode conter 50k, 100k ou até mais linhas e a partir de uma condição ele agrupar a própria linha e as próximas 3 gerando um arquivo novo de saída... segue um exemplo:
formato do arquivo sempre nesta sequencia:
BCKSOAP [2018/08/29 15:17:58:643:17343] [636818008]: Info:
The command is valid.
BCKSOAP [2018/08/29 15:17:58:643:17343] [636818008]: Info: SOAP Device Driver will send the XML command to SOAP server.
BCKSOAP [2018/08/29 15:17:58:657:17343] [636818008]: *Info: Network Element
BCKSOAP [2018/08/29 15:17:58:657:17343] [636818008]: *Info: SOAP server sent the following response [
BCKSOAP [2018/08/29 15:17:58:857:17343] [636818025]: Info:
The command is valid.
BCKSOAP [2018/08/29 15:17:58:943:17343] [636818025]: Info: SOAP Device Driver will send the XML command to SOAP server.
BCKSOAP [2018/08/29 15:17:58:957:17343] [636818025]: *Info: Network Element
BCKSOAP [2018/08/29 15:17:58:957:17343] [636818025]: *Info: SOAP server sent the following response [
eu preciso que toda linha que ele encontre a string
"The command is valid" "ele "printe" a linha com a string em questão e as próximas 3 linhas todas juntas em uma linha só... e vá adicionando respeitando essas condições toda vez que encontrar a string em questão no arquivo de saída... ou seja, se vamos agrupar 4 linhas em uma, o arquivo novo passará a ter o número de linhas do arquivo original dividido por 4... ficando assim...
BCKSOAP [2018/08/29 15:17:58:643:17343] [636818008]: Info:
The command is valid.BCKSOAP [2018/08/29 15:17:58:643:17343] [636818008]: Info: SOAP Device Driver will send the XML command to SOAP server.BCKSOAP [2018/08/29 15:17:58:657:17343] [636818008]: *Info: Network ElementBCKSOAP [2018/08/29 15:17:58:657:17343] [636818008]: *Info: SOAP server sent the following response [
consegui agrupar as linhas com o comando abaixo... porém não consigo fazer com que o "sed" continue a varredura do arquivo e de sequência no incremento do novo arquivo com as demais ocorrencias da string
The command is valid... quando mando ler o arquivo todo e gerar a saída, ele só grava a primeira concatenação das primeiras 4 linhas
sed -n '/The command is valid\./{x;p;x;N;N;N;p;q;};1!{H;g;};1,0!s/[^\n]*\n//;h;' | sed ':a;$!N;s/\n//;ta;' arq_entrada.txt >> arq_saida.txt
agradeço muito antecipadamente a ajuda
abs,
Alexandre Poulis