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 17:37:01 -0300

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]