[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Criação de arquivo
From: |
Paulo Bettega |
Subject: |
Re: [shell-script] Criação de arquivo |
Date: |
Thu, 20 Mar 2014 15:09:11 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 |
Olá Júlio, seguem os tempos dos sed, usei um arquivo maior como entrada.
big-file com 2059 linhas
"Conta";"Data_Mov";"Nr_Doc";"Historico";"Valor";"Deb_Cred" # linha 1
"3333222111111111";"20130101";"000000";"REM BASICA";"0.00";"C" # linha 2 (e
mais 2057 iguais)
> 1 - Executando somente um cmd sed:
time sed -r 's/"[0-9]+";"([0-9]+)";"([0-9]+).*/sinc_t \1 U \2 U/' < big-file
real 0m0.312s
user 0m0.102s
sys 0m0.017s
> 2 - Executando 3 sed para ER simples:
time sed 's/"[0-9]*";"/sinc_t /;s/";"/ U /;s/".*/ U/' < big-file
real 0m0.122s
user 0m0.033s
sys 0m0.013s
> 3 - Executando 3 sed para ERs expandidas:
time sed -r 's/"[0-9]+";"/sinc_t /;s/";"/ U /;s/".*/ U/' < big-file
sinc_t 20130101 U 000000 U
real 0m0.110s
user 0m0.030s
sys 0m0.012s
Parece que é vantagem separar o sed em vários comandos, e a ER simples ou
expandida não parece fazer diferença, pelo menos nesse caso.
Mas o awk ainda é mais rápido.
time awk 'BEGIN {FS=";"}{print "sinc_t "$1" U "$2" U"}' big-file
real 0m0.103s
user 0m0.015s
sys 0m0.012s
O sed e awk são realmente rápidos, mas eu cometi um erro na medição do
tempo no loop com while, usei sub-shells que atrasam muito o loop.
Abraços Paulo Bettega
On 20-03-2014 11:45, Julio C. Neves wrote:
Fala Paulo,
a solução que mandei na proposta anterior estava furada, pq não percebi que
tinham aspas envolvendo
cada campo. Te peço o favor de comparar os tempos do awk e das 3 soluções sed
que coloquei abaixo.
1 - Executando somente um cmd sed:
$ sed -r 's/"[0-9]+";"([0-9]+)";"([0-9]+).*/sinc_t \1 U \2 U/' <<<
'"3333222111111111";"20130101";"000000";"REM BASICA";"0.00";"C"'
2 - Executando 3 sed para ER simples:
$ sed 's/"[0-9]*";"/sinc_t /;s/";"/ U /;s/".*/ U/' <<<
'"3333222111111111";"20130101";"000000";"REM
BASICA";"0.00";"C"'
3 - Executando 3 sed para ERs expandidas:
$ sed -r 's/"[0-9]+";"/sinc_t /;s/";"/ U /;s/".*/ U/' <<<
'"3333222111111111";"20130101";"000000";"REM BASICA";"0.00";"C"'
Abcs,
Julio
*@juliobash*
- Re: [shell-script] Criação de arquivo, (continued)
- Re: [shell-script] Criação de arquivo, Ernander (Nander), 2014/03/17
- Re: [shell-script] Criação de arquivo, Valtoir, 2014/03/17
- Re: [shell-script] Criação de arquivo, Anderson, 2014/03/17
- Re: [shell-script] Criação de arquivo, Ernander (Nander), 2014/03/17
- Re: [shell-script] Criação de arquivo, Anderson, 2014/03/17
- Re: [shell-script] Criação de arquivo, Paulo Bettega, 2014/03/19
- Re: [shell-script] Criação de arquivo, Valtoir, 2014/03/19
- Re: [shell-script] Criação de arquivo, Paulo Bettega, 2014/03/19
- Re: [shell-script] Criação de arquivo, Paulo Bettega, 2014/03/19
- Re: [shell-script] Criação de arquivo, Julio C. Neves, 2014/03/20
- Re: [shell-script] Criação de arquivo,
Paulo Bettega <=
- Re: [shell-script] Criação de arquivo, Julio C. Neves, 2014/03/20