[SP-pm] SaoPaulo-pm Digest, Vol 81, Issue 79

Felipe Martins Oliveira da Silva flpmo at hotmail.com
Sun Jun 26 20:26:52 PDT 2011


Gostaria de ti mostrar uma outra solução usando expressões regulares.

$\ = "_EOF_";
open(LE, arquivo);
$conteudo = <LE>;
close LE;
$conteudo =~ s/.*?texto/texto/si;

Pronto, você terá todo conteúdo do texto para frente.

Att,
  Felipe Silva

From: saopaulo-pm-request em pm.org
Subject: SaoPaulo-pm Digest, Vol 81, Issue 79
To: saopaulo-pm em pm.org
Date: Sun, 26 Jun 2011 18:05:43 -0700

Send SaoPaulo-pm mailing list submissions to
	saopaulo-pm em pm.org
 
To subscribe or unsubscribe via the World Wide Web, visit
	http://mail.pm.org/mailman/listinfo/saopaulo-pm
or, via email, send a message with subject or body 'help' to
	saopaulo-pm-request em pm.org
 
You can reach the person managing the list at
	saopaulo-pm-owner em pm.org
 
When replying, please edit your Subject line so it is more specific
than "Re: Contents of SaoPaulo-pm digest..."


--Anexo de Mensagem Encaminhado--
From: gustavo.telly em gmail.com
To: saopaulo-pm em mail.pm.org
Date: Sun, 26 Jun 2011 21:56:14 -0300
Subject: Re: [SP-pm]	Selecionar texto após uma determinada linha em um arquivo

acredito que a primeira solução do Renato me parece ser exatamente oque você precisa Flávio,Se voce quise fazer pelo número da linha, acho que vai ficar mais complicado, por que você vai ter que colocar mais coisas no seu algoritmo(segundo exemplo do Renato).

E por cima mesmo, os 2 realizam a mesma coisa, de jeito diferente, mas acho que pra sua necessidade os primeiro é mais tranquilo :)
Você pode deixa-lo assim:

$encontrou = 0;$texto = '';open(.., '<', ..);
while( <..>) {   ???     if ($_ =~ /algumaregexpr/ ) {        $encontrou = 1;    }   while ($encontrou && !eof()){ #só mudar aqui para ele ir concatenando o valor até o fim do arquivo.
      $text .= $_;   }}
$textoAteoFinal = $texto;

2011/6/26 Renato Santos <renato.cron em gmail.com>

Toda a lógica para abrir o arquivo com perl está aqui:http://sao-paulo.pm.org/artigo/2010/analisedastecnicasparaabrirelerarquivos



Toda lógica para fazer o que você quer está aqui:
vars    a: texto   b: numero
a esta vaziob é indefinido



abrir arquivoenquanto (ler(arquvio)) repita
   se (linha-atual tem a ocorrencia) entao      b têm o valor da linha atual   fim-se
   se (b estiver definido) entao


      a = a + linha   fim-sefim-enquanto
todo o valor de "a" neste ponto será o texto entre texto encontrado até final do arquivo.




2011/6/26 "Flávio R. Lopes" <flavio.lopes em links.inf.br>






  


Putz, desculpe! Escrevi errado!

Supondo que a o número da linha onde há a ocorrência seja a linha 100,
como poderia fazer então para copiar da linha 100 até o final do
arquivo?



On 26-06-2011 21:28, Gustavo Telly wrote:
pq da linha 50 se a ocorrência está na 100 ???
  

  
  não entendi muito bem....
  

  
  []'s

  

  2011/6/26 "Flávio R. Lopes" <flavio.lopes em links.inf.br>

  
    
Deixar eu explicar melhor.

Supondo que o número da linha onde há a ocorrência da palavra seja a
linha número 100. Como eu faria para copiar/selecionar da linha 50 até
o final do arquivo?
    
    

    

On 26-06-2011 21:19, "Flávio R. Lopes" wrote:
     Olá Renato!

Então, estive pensando também na seguinte hipótese: Eu tenho como obter
o número da linha onde está a primera ocorrência do valor. Então à
partir disto, eu copiaria desta linha até o final do arquivo.

Dá para fazer isto?

      

On 26-06-2011 20:56, Renato Santos wrote:
      vc pode criar uma variavel que tera o
valor falso antes do
loop do arquivo, e mais uma vazia, e quando encontar o texto que está
procurando, jogue o troque o valor da variavel para outro, e depois
verifique se o valor é o .. ah, que saber:
        

        
        $encontrou = 0;
        $texto = '';
        open(.., '<', ..);
        while( <..>) {
           ??? 
            if ($_ =~ /algumaregexpr/ ) {
                $encontrou = 1;
            }
            if ($encontrou){
              $text .= $_;
           }
        }
        

        
        $textoAteoFinal = $texto;
        

        
        

Têm muitas formas, mas está é a mais clara.
        

        
        
        2011/6/26 "Flávio R. Lopes" <flavio.lopes em links.inf.br>

        Olá
pessoal!

Há alguns dias venho brigando com um  script, onde gostaria que este
script me ajudasse a selecionar algumas linhas de um arquivo de texto.

Preciso selecionar, à partir da ocorrência de uma determinada string,
todo o texto até o final do arquivo.

          

Supondo que eu tenha uma linha que inicie com "26-06-2011", como
poderia fazer a regex para copiar todo o texto desta linha até o final
do arquivo, inclusive esta linha?

          

abraço,

Flávio

          

          

=begin disclaimer

 Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer

        
        
        

        
        

-- 

Renato Santos

        http://www.renatocron.com/blog/

        
        
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
  
      
      

      
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
  
    
    

    
    
    
    

=begin disclaimer

  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer

    

  
  
  

  
  
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
  






=begin disclaimer

   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer




-- 
Renato Santos
http://www.renatocron.com/blog/



=begin disclaimer

   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer






--Anexo de Mensagem Encaminhado--
From: renato.cron em gmail.com
To: saopaulo-pm em mail.pm.org
Date: Sun, 26 Jun 2011 22:05:14 -0300
Subject: Re: [SP-pm]	Selecionar texto após uma determinada linha em um arquivo

HmmAbrindo um segundo loop dentro do loop [tericamente] gastaria mais processo que analisar se a linha atual bate ou não [e ainda pode ser verificado antes...]mas,se o intuito for performance, e o texto não for grande [menos de 1mb] podemos fazer um slurp e jogar tudo numa msema linha e bater uma simples expressão:



$arquivointeiro = do { local ( @ARGV, $/ ) = $file; <> };

$procura = qr 'o que vc ta procurando';


my ($ateofinal) = $arquivointeiro =~  /($procura.+)/;

2011/6/26 Gustavo Telly <gustavo.telly em gmail.com>


acredito que a primeira solução do Renato me parece ser exatamente oque você precisa Flávio,Se voce quise fazer pelo número da linha, acho que vai ficar mais complicado, por que você vai ter que colocar mais coisas no seu algoritmo(segundo exemplo do Renato).



E por cima mesmo, os 2 realizam a mesma coisa, de jeito diferente, mas acho que pra sua necessidade os primeiro é mais tranquilo :)
Você pode deixa-lo assim:



$encontrou = 0;$texto = '';open(.., '<', ..);
while( <..>) {   ???     if ($_ =~ /algumaregexpr/ ) {        $encontrou = 1;    }   while ($encontrou && !eof()){ #só mudar aqui para ele ir concatenando o valor até o fim do arquivo.


      $text .= $_;   }}
$textoAteoFinal = $texto;

2011/6/26 Renato Santos <renato.cron em gmail.com>



Toda a lógica para abrir o arquivo com perl está aqui:http://sao-paulo.pm.org/artigo/2010/analisedastecnicasparaabrirelerarquivos





Toda lógica para fazer o que você quer está aqui:
vars    a: texto   b: numero
a esta vaziob é indefinido





abrir arquivoenquanto (ler(arquvio)) repita
   se (linha-atual tem a ocorrencia) entao      b têm o valor da linha atual   fim-se
   se (b estiver definido) entao




      a = a + linha   fim-sefim-enquanto
todo o valor de "a" neste ponto será o texto entre texto encontrado até final do arquivo.




2011/6/26 "Flávio R. Lopes" <flavio.lopes em links.inf.br>








  


Putz, desculpe! Escrevi errado!

Supondo que a o número da linha onde há a ocorrência seja a linha 100,
como poderia fazer então para copiar da linha 100 até o final do
arquivo?



On 26-06-2011 21:28, Gustavo Telly wrote:
pq da linha 50 se a ocorrência está na 100 ???
  

  
  não entendi muito bem....
  

  
  []'s

  

  2011/6/26 "Flávio R. Lopes" <flavio.lopes em links.inf.br>

  
    
Deixar eu explicar melhor.

Supondo que o número da linha onde há a ocorrência da palavra seja a
linha número 100. Como eu faria para copiar/selecionar da linha 50 até
o final do arquivo?
    
    

    

On 26-06-2011 21:19, "Flávio R. Lopes" wrote:
     Olá Renato!

Então, estive pensando também na seguinte hipótese: Eu tenho como obter
o número da linha onde está a primera ocorrência do valor. Então à
partir disto, eu copiaria desta linha até o final do arquivo.

Dá para fazer isto?

      

On 26-06-2011 20:56, Renato Santos wrote:
      vc pode criar uma variavel que tera o
valor falso antes do
loop do arquivo, e mais uma vazia, e quando encontar o texto que está
procurando, jogue o troque o valor da variavel para outro, e depois
verifique se o valor é o .. ah, que saber:
        

        
        $encontrou = 0;
        $texto = '';
        open(.., '<', ..);
        while( <..>) {
           ??? 
            if ($_ =~ /algumaregexpr/ ) {
                $encontrou = 1;
            }
            if ($encontrou){
              $text .= $_;
           }
        }
        

        
        $textoAteoFinal = $texto;
        

        
        

Têm muitas formas, mas está é a mais clara.
        

        
        
        2011/6/26 "Flávio R. Lopes" <flavio.lopes em links.inf.br>

        Olá
pessoal!

Há alguns dias venho brigando com um  script, onde gostaria que este
script me ajudasse a selecionar algumas linhas de um arquivo de texto.

Preciso selecionar, à partir da ocorrência de uma determinada string,
todo o texto até o final do arquivo.

          

Supondo que eu tenha uma linha que inicie com "26-06-2011", como
poderia fazer a regex para copiar todo o texto desta linha até o final
do arquivo, inclusive esta linha?

          

abraço,

Flávio

          

          

=begin disclaimer

 Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer

        
        
        

        
        

-- 

Renato Santos

        http://www.renatocron.com/blog/

        
        
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
  
      
      

      
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
  
    
    

    
    
    
    

=begin disclaimer

  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer

    

  
  
  

  
  
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer
  






=begin disclaimer

   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer




-- 
Renato Santos
http://www.renatocron.com/blog/



=begin disclaimer

   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer





=begin disclaimer

   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/

 SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org

 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>

=end disclaimer




-- 
Renato Santos
http://www.renatocron.com/blog/

 		 	   		  
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110627/7599d9b8/attachment-0001.html>


More information about the SaoPaulo-pm mailing list