Extraindo trechos de texto de um arquivo

9 de maio de 2007  |  Ruby  | 

O problema era o seguinte: Tenho um arquivo de texto com um monte de informações inúteis e precisava ler este arquivo e retirar o texto que me interessa, gravando em outro arquivo.

Para ler um arquivo de texto é fácil:
[source:ruby]
f = File.open(“arquivo.txt”)
begin
linhas = f.readlines
todas_linhas = linhas.join
end
f.close
[/source]

Pronto agora tenhos o arquivo inteiro na string todas_linhas. O próximo passo é localizar o texto que preciso extrair.

Dentro do bloco begin..end:
[source:ruby]
retorno = “”
todas_linhas.scan /regular_expression/ do |texto|
retorno = “#{retorno}#{texto}\n”
end
[/source]
Pronto! A variável retorno já contém somente o texto que me interessa.

O método scan varre toda a string procurando por valores que combinem com a regular expression passada. Eu simplesmente pego este valor e separo.

No fim para gravar um novo arquivo…
[source:ruby]
x = File.new(“retorno.txt”, File::CREAT|File::TRUNC|File::RDWR, 0644)
begin
x.puts retorno
end
x.close
[/source]

Conhece um jeito mais fácil? Comenta aí!


1 Comentário


  1. Acho mais fácil assim:

    File.open("saida.txt",'w').puts File.open("/etc/hosts").select {|m| m =~ /^[^#]/}

Deixe um comentário