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

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

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


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

Pra constar: o script dele executava em 16h.

Com essas alterações rodou em pouco mais de 1.5h
Em 14/06/2013 17:37, "Alfredo Casanova" <address@hidden> escreveu:

> sim, eu sei
>
> mas no caso eu precisava das posicoes 9 até a 19, e mais a 39, de um total
> de 43
> entao eu teria q declarar assim:
>
> read var var var var var var var var QUERO1 QUERO2 QUERO3 QUERO4 QUERO5
> QUERO6 QUERO7 QUERO8 QUERO9 QUERO10 QUERO11 var var var var var var var
> var var var var var var var var var var var var QUERO12 var <<< "$var"
>
>
> fica meio complicado de ler hehehe
>
>
>
> 2013/6/14 Julio C. Neves <address@hidden>
>
>> **
>>
>>
>> Na-na-ni-na-não! Se vc só quer 19 de 30, não precisa declarar 30
>> variáveis,
>> basta declarar 19+1 e essa última será o lixo.
>>
>> Não esqueça que nenhuma variável quer ser a última, pq em se tratando de
>> variáveis, quem está atrás leva tudo. Veja:
>>
>> $ read letra1 letra2 letra3 numeros <<< "$var"
>> $ echo $letra1-$letra2-$letra3---$numeros
>> a-b-c---1 2 3
>>
>> Abcs,
>> Julio
>> *@juliobash
>> *
>>
>> Em 14 de junho de 2013 16:59, Alfredo Casanova <address@hidden
>> >escreveu:
>>
>>
>> > Na primeira tentativa eu fiz essa variável de lixo (só chamei de var
>> hehe)
>> > mas como é um arquivo com 43 posições, e eu preciso da 1-19 e mais a
>> 39, ia
>> > ficar uma zona
>> > então preferi fazer do outro jeito.
>> >
>> >
>> >
>> >
>> > 2013/6/14 Julio C. Neves <address@hidden>
>> >
>> > > **
>>
>> > >
>> > >
>> > > Para ficar mais rápido ainda, não altere o IFS nem gere variável.
>> > >
>> > >
>> > > IFS=\; read CO_CPF NO_CLIENTE DE_ENDERECO CO_COMPLEMENTO
>> > > DE_COMPLEMENTO NO_MUNICIPIO
>> > > SG_UF NO_BAIRRO CO_CEP NU_DDD NU_TELEFONE DT_NASCIMENTO <<< "$(cut
>> > > -f9-19,39 -d\; <<< "$1")"
>> > >
>> > > tb podia fazer assim:
>> > >
>> > > IFS=\; read a a a a a a a a CO_CPF NO_CLIENTE DE_ENDERECO
>> CO_COMPLEMENTO
>> > >
>> > > DE_COMPLEMENTO NO_MUNICIPIO SG_UF NO_BAIRRO CO_CEP NU_DDD NU_TELEFONE
>> > > DT_NASCIMENTO a <<< "$1"
>> > >
>> > > Nessa solução a variável $a seria um depósito de lixo. Isso deve ser
>> mais
>> > > rápido ainda pq o read e builtin e o cut não.
>> > >
>> > > Abcs,
>> > > Julio
>> > > *@juliobash
>> > > *
>> > >
>> > > Em 14 de junho de 2013 16:26, Alfredo Casanova <address@hidden
>> > > >escreveu:
>> > >
>> > >
>> > > > Vocês são mágicos mesmo
>> > > >
>> > > > Fiz o seguinte:
>> > > >
>> > > > UTILIZAR=$(echo "$1" | cut -f9-19,39 -d\;)
>> > > > IFS=\;
>> > > > read CO_CPF NO_CLIENTE DE_ENDERECO CO_COMPLEMENTO DE_COMPLEMENTO
>> > > > NO_MUNICIPIO SG_UF NO_BAIRRO CO_CEP NU_DDD NU_TELEFONE DT_NASCIMENTO
>> > <<<
>> > > > "$UTILIZAR"
>> > > >
>> > > > pronto, fantastico
>> > > >
>> > > >
>> > > > 2013/6/14 Sérgio <address@hidden>
>> > > >
>> > > > > **
>> > >
>> > > > >
>> > > > >
>> > > > > Acho que usando here strings tipo
>> > > > >
>> > > > > var="um dois tres"
>> > > > >
>> > > > > cat <<< $var
>> > > > >
>> > > > > seja mais rápido
>> > > > >
>> > > > > ...
>> > > > > outras considerações acerca das possíveis atribuições a essas
>> > variáveis
>> > > > >
>> > > > > será que dá pra fazer com múltipla atribuição como
>> > > > > visto abaixo?
>> > > > >
>> > > > > read day month year <<< $(date +'%d %m %y')
>> > > > >
>> > > > > No awk dá pra pegar os campos assim:
>> > > > >
>> > > > > awk -F";" '{print $15, $17, $18, $19, $39}' <<< "$REGISTRO_ATUAL"
>> > > > >
>> > > > > creio que colocando em uma substituição de comandos $()
>> > > > > é possível fazer múltipla atribuição
>> > > > >
>> > > > > --- Em address@hidden, Alfredo Casanova
>> > <atcasanova@
>> > > > ...>
>> > > > > 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: atcasanova@...
>> > > > >
>> > > > > > tel: +55 61 9655 9619
>> > > > > >
>> > > > > >
>> > > > > > [As partes desta mensagem que não continham texto foram
>> removidas]
>> > > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > >
>> > > >
>> > > >
>> > > > --
>> > > > []'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]
>> > > >
>> > > >
>> > > >
>> > > > ------------------------------------
>> > >
>> > > >
>> > > > ----------------------------------------------------------
>> > > > 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
>> > >
>> > > >
>> > > >
>> > > >
>> > >
>> > > [As partes desta mensagem que não continham texto foram removidas]
>> > >
>> > >
>> > >
>> >
>> >
>> >
>> > --
>> > []'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]
>> >
>> >
>> >
>> > ------------------------------------
>> >
>> > ----------------------------------------------------------
>> > 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
>> >
>> >
>> >
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>  
>>
>
>
>
> --
> []'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]