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.
ARGF.each | line |
line.gsub(...) if line.....
print line
end
and then
ruby -i.bup source.rb file1, ...
HTH
Robert
···
On Dec 4, 2007 10:18 AM, Paul Fox <olifoxpaul@googlemail.com> wrote:
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
---
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.)
File.open(filename, 'r+') { | handle |
out =
handle.readlines { | line |
patterns.each { | pattern, replacement |
if line.strip =~ pattern
line = line.gsub(pattern, replacement)
end
}
out << line
}
handle.write(out.join(''))
}
Untested...
Regards,
Jordan
···
On Dec 4, 3:18 am, Paul Fox <olifoxp...@googlemail.com> wrote:
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.
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
···
On Dec 4, 3:18 am, Paul Fox <olifoxp...@googlemail.com> wrote:
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.
any thoughts?
thanks,
f.
--
Posted viahttp://www.ruby-forum.com/.
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?
Robert Dober wrote:
> ruby -i.bup source.rb file1, ...
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
···
On Dec 4, 2007 12:11 PM, Paul Fox <olifoxpaul@googlemail.com> wrote:
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.)