[Cascavel-pm] Res: Res: Acesso aleatório à arquivos
Ricardo Stock
ricardostock em bol.com.br
Terça Fevereiro 22 08:55:57 PST 2011
Fernando parabens pelo código.
Perfeito, lindo funcional e inelegivel para meros humanos :-) tipica daqueles que falam que o perl é um monte de codigo bizonho.
mas ficou lindo, Parabens.
Esse codigo vai ficar guardado na minha coleção. :-)
Ricardo
----- Original Message -----
From: Fernando Corrêa de Oliveira
To: Cascavel Perl Mongers
Sent: Tuesday, February 22, 2011 11:07 AM
Subject: Re: [Cascavel-pm] Res: Res: Acesso aleatório à arquivos
Não por isso!
perl -F, -nale 'push @{ $pessoa{$F[0]}->{A} }, $F[1]; push @{ $pessoa{$F[0]}->{B} }, $F[2]; END{print "$_ => ", join(", ", @{ $pessoa{$_}->{A} }), "$/\t", join(", ", @{ $pessoa{$_}->{B} }), for keys %pessoa}' arquivo.txt
Em 22/02/2011, às 10:58, Leonardo Gerheim escreveu:
A resposta do Fernando foi muito d+, Show de bola mesmo.
Mas devido a forma que chegou o email para vocês, acho que não entenderam como deveria ser a disposição das notas na saída, porque dessa forma que vocês fizeram eu também fiz, não tão impressionantemente em uma linha.
A disposição das notas dever ser a nota A (NEGRITO) em cima na nota B (NORMAL) assim:
INPUT:
joao,1,1
joao,2,1
joao,1,2
maria,1,1
maria,2,1
maria,1,2
OUTPUT:
joao => 1,2,1
1,1,2
maria => 1,2,1
1,1,2
Entenderam? Por isso perguntei como faria para avançar e recuar uma linha.
Vlw pela força até agora.
----------------------------------------------------------------------------
De: Renato Santos <renato.cron em gmail.com>
Para: Cascavel Perl Mongers <cascavel-pm em pm.org>
Enviadas: Terça-feira, 22 de Fevereiro de 2011 10:40:37
Assunto: Re: [Cascavel-pm] Res: Acesso aleatório à arquivos
Fernando, funcionou!
joao => 10, 15, 10, 10, 8, 9
maria => 7, 9, 6, 9, 4, 10
O que o perl (GOLF =P) do Fernando faz é utilizar os argumentos do perl já dizendo que é para ler um arquivo (-n) separar por virgula (-F,) jogando cada item da linha para a @F (-a) remove o "enter" em cada linha (usando - l sem passar nenhum código) e o código em si, -e .
Coragem escrever isso no celular eim! Aja paciencia!
ps: legal o uso do END {}, nunca tinha pensando nisso.
2011/2/22 Fernando Oliveira <fernandocorrea em gmail.com>
Não é q faltou o for?! Pq ninguem me avisou?!
Em 22/02/2011 10:17, "Fernando Oliveira" <fernandocorrea em gmail.com> escreveu:
>
perl -F, -nale 'push @{ $pessoa{$F[0]} }, @F[1 .. $#F]; END{print "$_ => ", join ", ", @{ $pessoa{$_} } for keys %pessoa}' arquivo.txt
>
> Codigo escrito no cel e não testado!
> GOLF?!
>
> Em 22/02/2011 09:36, "Leonardo Gerheim" <general_andrade em yahoo.com.br> escreveu:
>
> > Agradeço à todos pelas respostas. Mas realmente não consegui me expressar,
> > como coloquei um exemplo não específico ficou realmente complicado o
> > entendimento. A minha intenção é a seguinte:
> > Eu quero poder movimentar dentro do arquivo, ou seja, avançar e recuar uma
> > uma linha do arquivo.
> >
> > ex de INPUT:
> >
> > joao,10,15
> > joao,10,10
> > joao,8,9
> > maria,7,9
> > maria,6,9
> > maria,4,10
> >
> > onde temos respectivamente o nome do aluno a nota A e a nota B, mas queremos
> > gerar um OUTPUT:
> >
> > joao 10,10,8
> > 15,10,9
> > maria 7,6,4
> > 9,9,10
> >
> >
> > Ou seja, uma nota após a outra.
> >
> > Para isso, pensei em ler a primeira linha, imprimir as notas notas uma
> > embaixo da outra, logoa após isso teria que retornar à primneira linha para
> > imprimir o segundo conjunto de notas, enquanto o nome do aluno for o mesmo. O
> > que não consegui fazer é essa parte de movimentar dentro do arquivo, avançando e
> > recuando em arquivos que tenham registros de tamanho diferente.
> > Caso existe um algoritmo mais simples por for me ajudem a montá-lo, mas de
> > qualquer forma me expliquei como avançar e recuar linhas.
> >
> > Att.
> >
> > P.S: A solução do Eden na sua última resposta resolveu a última questão, eu que
> > me expressei totalmente mal.
> >
> >
> >
> >
> >
> >
> >
> > ________________________________
> > De: Eden Cardim <edencardim em gmail.com>
> > Para: Cascavel Perl Mongers <cascavel-pm em pm.org>
> > Enviadas: Terça-feira, 22 de Fevereiro de 2011 9:04:35
> > Assunto: Re: [Cascavel-pm] Acesso aleatório à arquivos
> >
> >>>>>> "Leonardo" == Leonardo Gerheim <general_andrade em yahoo.com.br> writes:
> >
> > Leonardo> Olá pessoal, Preciso ler um arquivo e quando em uma
> > Leonardo> determinada linha contiver um valor, ele pular para a
> > Leonardo> próxima linha e quando encontrar um segundo valor não
> > Leonardo> imprimir mais nada, como no exemplo abaixo:
> >
> > Não ficou claro o que você quer aqui, mostra um exemplo da entrada e da
> > saída esperada.
> >
> > Leonardo> joao- não imprimir
> > Leonardo> maria- não imprimir
> > Leonardo> antonio- não imprimir
> > Leonardo> a- não imprimir
> > Leonardo> linguagem- IMPRIMIR
> > Leonardo> programacao- IMPRIMIR
> > Leonardo> b- não imprimir
> > Leonardo> elizabeth- não imprimir
> > Leonardo> kenia- não imprimir
> >
> > Isso é a entrada ou a saída do programa?
> > grep não resolve?
> > ,----[ cat test_data ]
> > | joao
> > | maria
> > | antonio
> > | a
> > | linguagem
> > | programacao
> > | b
> > | elizabeth
> > | kenia
> > `----
> > ,----[ cat test_data | grep "linguagem\|programacao" ]
> > | linguagem
> > | programacao
> > `----
> >
> > Leonardo> Eu consegui fazer um script para isso, entretanto
> > Leonardo> somente consegui que ele funcione, quando o amanho dos
> > Leonardo> registros são iguais. Como faço para resolver esse
> > Leonardo> problema tendo um arquivo com registros de tamnho
> > Leonardo> diferente?
> >
> > Se você mostrar o código, com um exemplo da execução, fica mais fácil te
> > ajudar.
> >
> > --
> > Eden Cardim
> > Software Engineer
> > +55 73 9986-3963
> > edencardim.com
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
> >
> >
> >
_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm
--
Renato Santos
http://www.renatocron.com/blog/
_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm
Just Another Perl Hacker
Fernando Corrêa de Oliveira
fernandocorrea em gmail.com
------------------------------------------------------------------------------
_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20110222/35a560c3/attachment-0001.html>
Mais detalhes sobre a lista de discussão Cascavel-pm