|
From: | Valtoir |
Subject: | Re: [shell-script] Criação de arquivo |
Date: | Wed, 19 Mar 2014 15:35:38 -0300 |
Olá pessoal, como o awk não é meu amigo (ainda), fiz um loop linha por linha com while,
e fiquei espantado com a diferença de tempo de execução entre o loop com while e o comando do awk.
O arquivo que eu usei tem 65 linhas, tem a linha com os nomes dos campos
e mais 64 linhas com os valores (é um extrato de poupança).
"Conta";"Data_Mov";"Nr_Doc";"Historico";"Valor";"Deb_Cred"
"3333222111111111";"20130101";"000000";"REM BASICA";"0.00";"C"
time while read linha; do
echo "sinc_t $( echo $linha|cut -d\; -f2) U $(echo $linha|cut -d\; -f3) U"
done <01.txt
real 0m1.954s
user 0m0.723s
sys 0m0.260s
awk do Ernander, só mudei o separador
time awk 'BEGIN {FS=";"}{print "sinc_t "$2" U "$3" U"}' 01.txt
real 0m0.217s
user 0m0.013s
sys 0m0.010s
O awk é quase dez vezes mais rápido? É isso mesmo ou eu cometi algum erro?
Os tempos variam, mas o awk sempre é menos de 0,5s e o while sempre é mais de 1,5s.
Na grande maioria das vezes a diferença é essa de quase dez vezes a mais.
Vendo que trabalhar com colunas talvez seja melhor do que com linhas, pensei em cortar as
colunas e imprimir com o paste.
time paste -d U <(
while read linha; do
echo "sinc_t $linha "
done <<<"$(cut -d\; -f2 <01.txt)"
) \
<(
while read linha; do
echo " $linha U"
done <<<"$(cut -d\; -f3 <01.txt)"
)
real 0m0.056s
user 0m0.015s
sys 0m0.005s
Ficou muito mais próximo do tempo do awk do que do loop linha por linha do while.
Conclusão que eu tirei, linha por linha só se não tiver outro jeito,
e começar a aprender awk pra valer :)
Abraços Paulo Bettega> Em 17 de março de 2014 11:28, Anderson <address@hidden <mailto:address@hidden>>
On 17-03-2014 11:33, Ernander (Nander) wrote:
> Olha como é mais Fácil, viu?
>
> com esses dados vc pode fazer::
>
> awk '{print "sinc_t "$1" U "$2" U"}' arquivo.txt
>
> Teste aí Veja:ernander@TensaZangetsu ~ $ cat arquivo.txt Contratos Telefones TESTE01
> 3322229999 xxxxxxx xxxxxxxxxx ernander@TensaZangetsu ~ $ awk '{print "sinc_t "$1" U "$2"
> U"}' arquivo.txt sinc_t Contratos U Telefones U sinc_t TESTE01 U 3322229999 U sinc_t xxxxxxx U
> xxxxxxxxxx U ernander@TensaZangetsu ~ $
>
>
>
>
>
>
> escreveu:
>
> __
>
> Eles então em um arquivo .txt no seguinte formato:
>
> Contratos Telefones xxxxxxx xxxxxxxxxx xxxxxxx xxxxxxxxxx
>
> Gostaria de saber uma forma de editar todos de uma só vez para o formato abaixo, para serem
> processados.
>
> sinc_t 1111111 U 2222222 U contrato fone
>
>
>
> Vlw
>
[Prev in Thread] Current Thread [Next in Thread]
- Re: [shell-script] Criação de arquivo, (continued)
- Re: [shell-script] Criação de arquivo, Paulo Bettega, 2014/03/20
- Re: Criação de arquivo, itamarnet, 2014/03/17
- Re: [shell-script] Criação de arquivo, Julio C. Neves, 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, 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 <=
- 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, 2014/03/20
- Re: [shell-script] Criação de arquivo, Julio C. Neves, 2014/03/20
- Prev by Date: Re: [shell-script] Criação de arquivo
- Next by Date: Re: [shell-script] Criação de arquivo
- Previous by thread: Re: [shell-script] Criação de arquivo
- Next by thread: Re: [shell-script] Criação de arquivo
- Index(es):