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

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

Re: [shell-script] Contar número de campos de uma linha


From: Tiago Peczenyj
Subject: Re: [shell-script] Contar número de campos de uma linha
Date: Wed, 10 Aug 2011 15:47:43 -0300

ola rodrigo

sua solução parece boa porém seria interessante que a mesma viesse sob forma
de testes.

por exemplo, vc pode usar o paste bin para "provar" que a sua solução é boa
ao fazer algo como

$ cat exemplo.txt
...

$ grep -opcoes 'expressão regular' exemplo.txt
...


via algum pastebin.com da vida

sigo isso pq posso não estar no mesmo sistema operacional que vc, ou mesmo
shell ou opçoes de localização. se vc me mostrar que funciona "para vc"
provavelmente vai funcionar para todos, caso contrario podemos debater sobre
as possiveis diferenças e todo mundo sai ganhando.

imagine que vc ache uma solução que só rode bem em um ksh de um HP-UX, é
interessante saber mais sobre isso.

2011/8/10 Rodrigo Boechat <address@hidden>

> **
>
>
> Eu vi outro tipo de solução possível para sua questão.
> Considerei que os campos que você citou possuem quantidade de caracteres
> definida.
> 10*8*8*10*....
> Como é o quarto campo que importa, segundo seu relato, fiz uma expressão
> simples de ser entendida.
> ^[0-9]{10}\*[0-9]{8}\*[0-9]{8}\*([0-9]{10}|\*)
> Basicamente é só você testar quais as linhas que não se enquadram nessa
> expressão com egrep e inserir os campos vazios.
>
> Espero ter ajudado.
>
> Rodrigo Boechat
>
> Em 10-08-2011 11:29, Valtoir escreveu:
>
> >
> > Adaptado de um exemplo do MrBits, na lista:
> >
> > cat arquivo | while read linha; do IFS="*"; set - $linha; echo $#; done
> >
> > Valtoir
> >
> > Em 10 de agosto de 2011 10:55, Fabricio Mattos <address@hidden
> > <mailto:fabrimatt%40gmail.com>> escreveu:
>
> > > Realmente, entendi que ele queria contar os caracteres
> > >
> > >
> > >
> > >
> > > Em 10 de agosto de 2011 10:40, Tiago Peczenyj
> > > <address@hidden <mailto:tiago.peczenyj%40gmail.com
> >>escreveu:
>
> > >
> > >> **
> > >>
> > >>
> > >> fabricio, dessa forma vc calcularia o numero de caracteres e não de
> > >> campos separador pelo caracter *
> > >>
> > >> 2011/8/10 Fabricio Mattos <address@hidden
> > <mailto:fabrimatt%40gmail.com>>:
>
> > >>
> > >> > wc -c nome_do_ARQUIVO
> > >> >
> > >> > Em 10 de agosto de 2011 10:16, Mauricy Maiorino
> > >> > <address@hidden
> > <mailto:mauricym%40ccuec.unicamp.br>>escreveu:
>
> > >> >
> > >> >> **
> > >> >>
> > >> >>
> > >> >> Pessoal
> > >> >>
> > >> >> Preciso "contar" o número de campos de uma linha de um arquivo no
> > >> formato:
> > >> >>
> > >> >> 1996062519*20110530*08312100*1996062515*0,70*0,00*CHAMADA
> > >> >> LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
> > >> >> 1996062519*20110602*09402000*1996062528*7,80*0,00*CHAMADA
> > >> >> LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
> > >> >> 1996062519*20110602*10291200*1996062510*16,50*0,00*CHAMADA
> > >> >> LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
> > >> >> 1996062519*20110515*18024600*1996062511*1,00*0,21*TORPEDO VIVO
> > >> >> FLEXIVE*UTILIZAÇÃO ACIMA DO CONTRATADO
> > >> >> 1996062519*20110507*10470400**1,00*2,21*SINCRONISMO
> > INICIAL*UTILIZAÇÃO
> > >> >> ACIMA DO CONTRATADO
> > >> >> 1996062519*20110523*11443600**1,00*0,36*ATUALIZACAO
> > AGENDA*UTILIZAÇÃO
> > >> >> ACIMA DO CONTRATADO
> > >> >>
> > >> >> o arquivo "tem" que conter 8 campos por linha. Preciso que o
> > numero de
> > >> >> campos seja retornado para que quando a linha contiver, no caso,
> > menos
> > >> >> que 8 campos ele execute determinada ação(incluir um campo em
> branco
> > >> >> após o terceiro campo). Os campos são separados por *.
> > >> >>
> > >> >> Não sei como pegar este valor!!
> > >> >>
> > >> >> Obrigado
> > >> >>
> > >> >> Mauricy
> > >> >>
> > >> >>
> > >> >>
> > >> >
> > >> >
> > >> > [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
> > <mailto:shell-script-unsubscribe%40yahoogrupos.com.br>
>
> > >> > ----------------------------------------------------------
> > >> > 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
> > >>
> > >> >
> > >> >
> > >> >
> > >>
> > >> --
> > >> Tiago B. Peczenyj
> > >> Linux User #405772
> > >>
> > >> http://pacman.blog.br
> > >>
> > >>
> > >>
> > >
> > >
> > > [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
> > <mailto:shell-script-unsubscribe%40yahoogrupos.com.br>
>
> > > ----------------------------------------------------------
> > > 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]
>
>  
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


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



reply via email to

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