[SP-pm] Selecionar texto após uma determinada linha em um arquivo

Gustavo Telly gustavo.telly at gmail.com
Sun Jun 26 17:56:14 PDT 2011


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 vazio
> b é indefinido
>
> abrir arquivo
> enquanto (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-se
> fim-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> <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> <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> <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
>
>
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110626/efb7d824/attachment.html>


More information about the SaoPaulo-pm mailing list