Finding and writing to specified area in a text file

Hello,

I'm trying to find a specified keyword in a text file that I have open
then replace the line of that keyword with some new text. Is it
possible do do this?

So something like:

#custom.txt
hello world
INSERT
end of hello world

So INSERT would be swapped with some new text.

Thanks

···

--
Posted via http://www.ruby-forum.com/.

In all of my research online, the only way that I've found to do it is
to read the entire file, replace what you wanna replace, write to a new
file, then copy over the original one. I hope someone can show me a
better way.

--Aldric

Ryan Mckenzie wrote:

···

Hello,

I'm trying to find a specified keyword in a text file that I have open
then replace the line of that keyword with some new text. Is it
possible do do this?

So something like:

#custom.txt
hello world
INSERT
end of hello world

So INSERT would be swapped with some new text.

Thanks

Aldric Giacomoni wrote:

In all of my research online, the only way that I've found to do it is
to read the entire file, replace what you wanna replace, write to a new
file, then copy over the original one. I hope someone can show me a
better way.

--Aldric

Hi Aldric,

I'm actually looking to replace some text/code in 3-4 places so i can't
hardcode specific lines into the model because they could change. All
of this needs to be done on a button click so the actual file is hidden
from the user. I'm eventually wanting to add form input boxes and use
them to replace the text/code areas.

Thanks for your help. Please could you put up some of your code for me
to study?

···

--
Posted via http://www.ruby-forum.com/\.

Aldric Giacomoni wrote:

In all of my research online, the only way that I've found to do it is
to read the entire file, replace what you wanna replace, write to a new
file, then copy over the original one. I hope someone can show me a
better way.

--Aldric

You know , there is an alternative to writing to a new file . You will
have to read the file contents , modify them , seek to the file's start
, write the modified contents and truncate at the current position .

···

--
Posted via http://www.ruby-forum.com/\.

A gsub (global substitution) should take care of the problem. Here's an
example of how I might do this:

···

######################################################

data = ""

File.open("my_file.txt", "r") do |file|
  data = file.read.gsub("INSERT", "new word")
end

File.open("my_file.txt", "w") do |file|
  data = file.write(data)
end

######################################################

The gsub command also supports regular expressions, if you need it.
--
Posted via http://www.ruby-forum.com/.