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: Julio C. Neves
Subject: Re: [shell-script] Re: melhor forma para atribuir variáveis
Date: Fri, 14 Jun 2013 17:32:04 -0300

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]



reply via email to

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