From: Andy Date: 2008-02-18T13:38:11+09:00 Subject: Re: Help with Writing Replacement Text to Files Thomas, I'm new to Ruby (only a few days) but this is something I think I can actually help you with. I had to do some searching and I came across this website .. http://pleac.sourceforge.net/pleac_ruby/fileaccess.html Search for 'Modifying a File in Place Without a Temporary File' and you'll find the code. I'll paste it here though just to make it quick and easy .. File.open('itest', 'r+') do |f| # open file for update lines = f.readlines # read into array of lines lines.each do |it| # modify lines it.gsub!(/foo/, 'QQQ') end f.pos = 0 # back to start f.print lines # write out modified lines f.truncate(f.pos) # truncate to new length end # file is automatically closed r+ is the mode that allows you to read and write to the file. I made a text file named itest with this for content .. foo foo bar bar foo foo I ran that code and the file got changed to .. QQQ QQQ bar bar QQQ QQQ That's what you're looking for isn't it? I would suggest making a backup of the files just in case there is a problem. If that isn't what you were looking for I apologize, reply back to this and I'll try again haha. -- -Andy "I have a great faith in fools; self-confidence my friends call it." – Edgar Allen Poe On Feb 17, 2008 9:00 PM, Thomas Pierce wrote: > Hello! > > I'm new to ruby and been reading this very active list for about a > couple of week. > > I have a project at work where I need to write a simple script to > scrub IP addresses from configuration files for classified networks we > work in sometimes. The goal is to cleanse configuration files > sometimes required for support of any specific network addressing > information. Here is what I've come up with so far. While this works > in IRB on the file object I create, I cannot figure out how to write > the changes back in place to the actual file itself back on the regex > I'm using: > > config_file = File.open("config.txt") > config_txt = config_file.read > config_txt.gsub!(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/, > "000.000.000.000") > > I do understand that the default action here is read-only. How to do I > parse with the regex on the current file and replace matching strings > without either appending to the file, overwriting the file, or > creating a new file? > > Thanks! > > ~Thomas > >