|
From: | Rodrigo Tenorio |
Subject: | Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão. |
Date: | Fri, 29 Jan 2016 14:17:24 +0000 |
Acho estes testes muito úteis para os apreciadores de shell da lista.Qdo te pedir para testar, não havia reparado o pipe e outra chamada do sed, o que realmente deve dar uma destorcida na avaliação. Te peço o favor de também publicar aqui
a proposta do Itamar, que eliminou o "| sed" e foi a seguinte:$ time sed -r "s/[^\(]*(([^\)]+\),){5})/INSERT INTO 'TABLE' VALUES \1;\n/g; s/,;/;/g" teste_sp.sqlOBS: Pessoal, em abril darei um treinamento no RJ em 2 fins de semana (32 horas) por um preço ridiculamente baixo, porém será no *seu* notebook, *não* darei livros (mas consigo 30% de desconto na compra) e *sem* coffee break. Se alguém estiver a fim, me mande um e-mail em pvt que explico como,onde e quando será e como consegui chegar a esse preço ridículo.Em 29 de janeiro de 2016 00:21, Rodrigo Tenorio address@hidden [shell-script] <address@hidden> escreveu:Kkkkkkk
É tão difícil que fiquei até com vergonha de não saber...
Direto ao ponto:
SED puro:
time sed -r "s/[^\(]*(([^\)]+\),){5})/\1;\n/g; s/,;/;/g" teste_sp.sql | sed "s/^/INSERT INTO 'TABLE' VALUES /g"real 0m52.688suser 0m17.208ssys 0m0.356s
AWK puro:time awk -F '[)],[(]' '{for (i=1;i<=NF;i++) printf (i>1?"(" $i:$i) (i<NF?")":"") (i%5==0 && i<NF?";\nINSERT INTO '\''TABLE'\'' VALUES ":(i<NF?",":"\n"))}' teste_sp.sqlreal 0m43.486suser 0m0.944ssys 0m0.332sProfessor,Tentei prever o máximo de info que talvez fosse relevante, mas se precisar de mais alguma coisa é só falar.Observações:
> O arquivo original possui dezesseis linhas;> Para cada linha o SED apresentou uma pausa de aproximadamente um segundo, não consegui contabilizar isso direito;> O AWK não apresentou pausa alguma. Foi direto até o final.
> Com o redirecionamento de saída para arquivo " >> cep_sp_data_dump.sql" o AWK foi quase instantâneo;> O SED levou um tempo consideravelmente maior [talvez por culpa do pipe???];> O gEdit leva aproximadamente quatro minutos para abrir o arquivo original de 15MB em 16 linhas;> Já o arquivo resultante é aberto em menos de um minuto e tem mais de 40k linhas em 17MB;> O arquivo do SED ficou 300kb menor que o do AWK, verifiquei que os últimos registros não foram criados corretamente. a ultima linha só teve o "insert .... value";Seguem infos do meu pc:
RAM: 8GBlscpuArquitetura: x86_64Modo(s) operacional da CPU32-bit, 64-bitByte Order: Little EndianCPU(s): 4On-line CPU(s) list: 0-3Thread(s) per núcleo 2Núcleo(s) por soquete:2Soquete(s): 1Nó(s) de NUMA: 1ID de fornecedor: GenuineIntelFamília da CPU: 6Modelo: 37Step: 5CPU MHz: 933.000BogoMIPS: 5054.83Virtualização: VT-xcache de L1d: 32Kcache de L1i: 32Kcache de L2: 256Kcache de L3: 3072KNUMA node0 CPU(s): 0-3Em qui, 28 de jan de 2016 às 22:00, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:Como em shell tudo é muito difícil de fazer, para medir os tempos de execução não poderia ser diferente. Vc t de colocar o cmd time do awk e antes do sed, ou seja:
time awk ...
e
time sed ...
Viu como é difícil. ;)
Em 28/01/2016 9:48 PM, "Rodrigo Tenorio address@hidden [shell-script]" <address@hidden> escreveu:Não vejo problemas em testar, professor.Mas não tenho ideia de como posso realizar o teste.
Andei procurando no google e só achei coisas relativas a benchmark e teste de velocidade de conexão.O que devo fazer para realizar o teste?Desculpe...
Copiei código errado...O código puro em awk seria esse:$ awk -F '[)],[(]' '{for (i=1;i<=NF;i++) printf (i>1?"(" $i:$i) (i<NF?")":"") (i%5==0 && i<NF?";\nINSERT INTO '\''TABLE'\'' VALUES ":(i<NF?",":"\n"))}' arquivo.sql[]'sItamar
[Prev in Thread] Current Thread [Next in Thread]
- Re: [shell-script] Inserir quebra de linha a cada N repetições de um padrão., (continued)
- Re: [shell-script] Inserir quebra de linha a cada N repetições de um padrão., Fredi Rolf Bieging, 2016/01/27
- Re: [shell-script] Inserir quebra de linha a cada N repetições de um padrão., Rodrigo Tenorio, 2016/01/27
- Re: [shell-script] Inserir quebra de linha a cada N repetições de um padrão., Julio C. Neves, 2016/01/27
- Re: [shell-script] Inserir quebra de linha a cada N repetições de um padrão., itamarnet, 2016/01/28
- Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão., itamarnet, 2016/01/28
- Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão., Rodrigo Tenorio, 2016/01/28
- Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão., Julio C. Neves, 2016/01/28
- Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão., Rodrigo Tenorio, 2016/01/28
- Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão., itamarnet, 2016/01/29
- Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão., Julio C. Neves, 2016/01/29
- Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão., Rodrigo Tenorio <=
- Re: Inserir quebra de linha a cada N repetições de um padrão., itamarnet, 2016/01/29
- Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão., Julio C. Neves, 2016/01/29
Re: Inserir quebra de linha a cada N repetições de um padrão., itamarnet, 2016/01/27
- Re: [shell-script] Re: Inserir quebra de linha a cada N repetições de um padrão., Rodrigo Tenorio, 2016/01/27
- Re: [shell-script] Re: Inserir quebra de linha a cad a N repetições de um padrão., itamarnet, 2016/01/27
- Re: [shell-script] Re: Inserir quebra de linha a cad a N repetições de um padrão., Rodrigo Tenorio, 2016/01/27
Re: [shell-script] Inserir quebra de linha a cada N repetições de um padrão., phfbettega, 2016/01/31
- Prev by Date: Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão.
- Next by Date: Re: Inserir quebra de linha a cada N repetições de um padrão.
- Previous by thread: Re: [shell-script] Inserir quebra de l inha a cada N repetições de um padrão.
- Next by thread: Re: Inserir quebra de linha a cada N repetições de um padrão.
- Index(es):