hi all,
i have a text file with various lines, and i want to alter some of these
using regex and gsub.
so i have patterns={/some_pattern/=>“replacement text”}
and i’m thinking this:
in = File.open(filename)
while (line=in.gets)
if line.strip =~ pattern
line.gsub(pattern,patterns[pattern])
end
end
but i’m not sure if that’s efficient? and of course, i’m struggling on
the best way of writing those changes back into the file.
All truth passes through three stages. First, it is ridiculed. Second,
it is violently opposed. Third, it is accepted as being self-evident.
Schopenhauer (attr.)
thanks for the reply the -i flag looks like it’ll be useful, but in my
current situation, i need to be able to do it via an instance method,
rather than command line.
i guess i could call system() to do it, but tht doesn’t seem right?
thanks for the reply the -i flag looks like it’ll be useful, but in my
current situation, i need to be able to do it via an instance method,
rather than command line.
I fail to understand, can you elaborate on the calling environment?
Assuming that you cannot use the -i flag I would be tempted to read
the file into memory or use tempfile to create a copy of the original
file and than open the original file with write access (“w”), if this
is not feasible either I would (as a last resort ) go for read-write
access, this is quite messy at least FWIAC :(.
Hopefully somebody else can give you (us) better information about
that particular issue.
Robert
i guess i could call system() to do it, but tht doesn’t seem right?
All truth passes through three stages. First, it is ridiculed. Second,
it is violently opposed. Third, it is accepted as being self-evident.
Schopenhauer (attr.)
but i’m not sure if that’s efficient? and of course, i’m struggling on
the best way of writing those changes back into the file.
any thoughts?
thanks,
f.
Posted viahttp://www.ruby-forum.com/.
I did something similar using the rio library. Cleaned up some vb
files in place
require ‘rio’
rio(‘C://test’).all.files('.vb’) do |f|
rio(f) <f.contents.gsub(/'UPGRADE.\s/,“”).gsub(/On Error GoTo
ErrHandler/,“Try”).gsub(/ErrHandler:/,“Catch ex as Exception\n”).gsub(/
Resume Next/,“End Try”)
end