From: Bryan JJ Buckley Date: 2008-06-20T03:43:49+09:00 Subject: Re: Add new text to files Hi, To edit a file in place, you could try something like File.open('file.rb', 'r+') do |file| file.each do |line| if line =~ /line text/ file.seek(-line.size, IO::SEEK_CUR) file.puts("Hello") end end end Note the minus before line.size. This will probably fall over on non-ascii files, as you're seeking back too little (String#size returns the number of letters). However, this is a C-ish approach, and unless you want your programme to run on a tamagotchi, or something, you're probably better off just reading in one file, and writing to another. 2008/6/19 Chris Conley : > Hello, > > I'm trying to insert new text into the middle of a file with the > following: > > file = File.open("file.rb", "r+") > file.each { |line| > if line.match(/line text/) > file.puts("hello") > end > } > > This works fine except that it overwrites the existing 5 characters to > replace with "hello". Is there a way to insert a new line with new > text without overwriting any existing data? > > Thanks! > Chris > > -- JJ