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
