[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