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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] melhor forma para atribuir variáveis


From: Alfredo Casanova
Subject: Re: [shell-script] melhor forma para atribuir variáveis
Date: Fri, 14 Jun 2013 16:56:28 -0300

Julio, vou aproveitar pra contar a história aqui
Um amigo meu trabalha pra um banco e tem um script lá q trata esses dados
pra gerar um SQL.
Aí ele veio falar comigo, porque o script estava muito lento e ele queria
usar awk. Falei q não precisava e pedi o script pra dar uma olhada.

esse é o dele:
http://pastebin.com/xpNktS78
(tratou 1000 linhas em 56s)

essa é a versão final do q enviei pra ele:

http://pastebin.com/VHxRJRTL

tratou 1000 linhas em 5.9s






2013/6/14 Julio C. Neves <address@hidden>

> Eu não conheço o volume dos seu dados e pode ser que essa sugestão exploda
> a memória, mas outra forma bem rápida de fazer isso, seria dividir o
> arquivo em n vetores. Supondo que teu registro tem 20 campos, vc podia
> separar cada coluna em um vetor mais ou menos assim:
>
> for ((i=1; i<=20; i++))
> {
>     Vet$i=($(cut -d";" -f$i Arquivo))
> }
>
> Assim vc criaria um vetor para cada coluna (de Vet1 a Vet20). Depois para
> lê-los, bastaria fazer algo como:
>
> for ((i=1; i<=${#Vet1[@]}; i++))
> {
>  # aqui vc teria em ${Vetn[i]} todos os campos referentes àquele registro
> }
>
> Taí, se a tua memória não explodir, gostaria de saber qual da duas soluções
> que propus (essa e a do Here strings) seria a mais veloz.
>
> Abcs,
> Julio
> *@juliobash
> *
>
>
>
> Em 14 de junho de 2013 16:08, Alfredo Casanova <address@hidden
> >escreveu:
>
> > **
> >
> >
> > Hahahahah
> > depois dessa vou ter q aparecer mesmo, Julio
> >
> > 2013/6/14 Julio C. Neves <address@hidden>
> >
> > > Tá lá no Papo de
> > > Botequim<
> > > https://wiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Here_Strings
> >.
> > > Veja o que o uso integrado de Here Strings (<<<) e da variável $IFS,
> > podem
> > > fazer por vc:
> > >
> > > $ Var='1;2;3;4;5;6'
> > > $ IFS=\; read a b c d <<< "$Var"
> > > $ echo -e "$a\n$b\n$c\n$d"
> > > 1
> > > 2
> > > 3
> > > 4;5;6
> > >
> > > Não adianta espernear, vc ainda vai aparecer por lá para tomar um
> chope.
> > ;)
> > >
> > > Abcs,
> > > Julio
> > > *@juliobash
> > > *
> > >
> > >
> > >
> > > Em 14 de junho de 2013 14:35, Alfredo Casanova <address@hidden
> > > >escreveu:
> > >
> > > > **
> > > >
> > > >
> > > > estou lendo um csv gigantesco, e preciso separar vários campos em
> > > variáveis
> > > > distintas:
> > > >
> > > > SG_UF=`echo "$REGISTRO_ATUAL" | cut -d";" -f15`
> > > > CO_CEP=`echo "$REGISTRO_ATUAL" | cut -d";" -f17`
> > > > NU_DDD=`echo "$REGISTRO_ATUAL" | cut -d";" -f18`
> > > > NU_TELEFONE=`echo "$REGISTRO_ATUAL" | cut -d";" -f19`
> > > > DT_NASCIMENTO=`echo "$REGISTRO_ATUAL" | cut -d";" -f39`
> > > >
> > > > dentre outros
> > > > só que isso em larga escala (arquivos com mais de 1milhao de
> registros)
> > > > fica extremamente lento.
> > > >
> > > > Existe alguma forma de atribuir essas variáveis de outra forma?
> > > >
> > > > --
> > > > []'s
> > > > Alfredo Casanova
> > > > Linux User #228230
> > > > msn: address@hidden
> > > > tel: +55 61 9655 9619
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > >
> > > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > > ----------------------------------------------------------
> > > Esta lista não admite a abordagem de outras liguagens de programação,
> > como
> > > perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> > > prévio aviso.
> > > ----------------------------------------------------------
> > > Sair da lista: address@hidden
> > > ----------------------------------------------------------
> > > Esta lista é moderada de acordo com o previsto em
> > > http://www.listas-discussao.cjb.net
> > > ----------------------------------------------------------
> > > Servidor Newsgroup da lista: news.gmane.org
> > > Grupo: gmane.org.user-groups.programming.shell.brazil
> > >
> > > Links do Yahoo! Grupos
> > >
> > >
> > >
> >
> > --
> > []'s
> > Alfredo Casanova
> > Linux User #228230
> > msn: address@hidden
> > tel: +55 61 9655 9619
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


-- 
[]'s
Alfredo Casanova
Linux User #228230
msn: address@hidden
tel: +55 61 9655 9619


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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