[Cascavel-pm] Res: Res: Acesso aleatório à arquivos

Leonardo Gerheim general_andrade em yahoo.com.br
Terça Fevereiro 22 05:58:27 PST 2011


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/



      
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20110222/1cfdc0a3/attachment-0001.html>


Mais detalhes sobre a lista de discussão Cascavel-pm