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: [email protected]
Subject: SaoPaulo-pm Digest, Vol 81, Issue 79
To: [email protected]
Date: Sun, 26 Jun 2011 18:05:43 -0700

Send SaoPaulo-pm mailing list submissions to
        [email protected]
 
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
        [email protected]
 
You can reach the person managing the list at
        [email protected]
 
When replying, please edit your Subject line so it is more specific
than "Re: Contents of SaoPaulo-pm digest..."


--Anexo de Mensagem Encaminhado--
From: [email protected]
To: [email protected]
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 <[email protected]>

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" <[email protected]>






  


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" <[email protected]>

  
    
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" <[email protected]>

        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: [email protected]

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: [email protected]
 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: [email protected]
 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: [email protected]

 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: [email protected]
 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: [email protected]

 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: [email protected]

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

=end disclaimer






--Anexo de Mensagem Encaminhado--
From: [email protected]
To: [email protected]
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 <[email protected]>


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 <[email protected]>



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" <[email protected]>








  


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" <[email protected]>

  
    
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" <[email protected]>

        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: [email protected]

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: [email protected]
 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: [email protected]
 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: [email protected]

 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: [email protected]
 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: [email protected]

 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: [email protected]

 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: [email protected]

 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: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a