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í!
Acho mais fácil assim:
File.open("saida.txt",'w').puts File.open("/etc/hosts").select {|m| m =~ /^[^#]/}