shell-script-pt
[Top][All Lists]
Advanced

[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 14:45:12 -0300
User-agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.3.0

Olá pessoal, vendo o exemplo do Alex percebi que cometi um crime contra o loop 
do while.

As sub-shells com echo e cut atrasam muito o loop, então arrumei o loop sem as sub-shells e carregando cada campo em uma variável como no exemplo do Alex.

Fazendo assim o tempo de execução fica muito menor, mas o awk continua sendo 
mais rápido.


Agora testei num arquivo maior, com 2059 linhas.

big-file
"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)

time awk 'BEGIN {FS=";"}{print "sinc_t "$1" U "$2" U"}' big-file

real    0m0.103s
user    0m0.015s
sys     0m0.012s

time while read c1 c2 c3 c4 c5 c6;do echo "sinc_t $c1 U $c2 U";done < <(cat 
big-file|tr ';' '\t')

real    0m0.775s
user    0m0.193s
sys     0m0.111s

Tentei primeiro com read -d\; mas não deu o resultado esperado, então fiz a 
gambiarra com o tr.
Só por comparação, o loop com as sub-shells demorou mais de um minuto 
processando o big-file.


Abraços Paulo Bettega


On 19-03-2014 22:49, address@hidden wrote:
Caro colega,

Isso é bem tranquilo de fazer no shell.

Vc pode fazer isso utilizando um loop.

While read contrato telefone
do
echo "sinc_t($contrato) U ($telefone) U" >> arq-saida.txt
done < arq-entrada.txt

Pronto.

Caso o conteudo do arquivo de entrada contenha mais informacoes sera necessario 
usar awk.

Enviada do meu iPhone



reply via email to

[Prev in Thread] Current Thread [Next in Thread]