i have done some research, but can't see anything that explains simple
file writing. eventually, i may end using rexml, but for now i just
want to use a simple text file.
ip.txt contains three lines of text. they are as follows:
thanks to help i received on this forum, i know how to open the file.
i also figured out how to grep a line of text and then manipulate the
line so i get only the data of interest.
what i don't know how to do is to...
1. write this data to a newly created file (case: file doesn't exist)
2. overwrite the data (case: file exists but data needs to be updated).
eg, let's say my ip changed to 127.0.0.2. i want to delete "#ip
127.0.0.1" and replace it with "#ip 127.0.0.2". i i'd also consider if
deleting just 127.0.0.1 and replacing it with 127.0.0.2 if it makes
more sense.
2. overwrite the data (case: file exists but data needs to be updated).
You can use the same code. It will overwrite the current file with the new data.
eg, let's say my ip changed to 127.0.0.2. i want to delete "#ip
127.0.0.1" and replace it with "#ip 127.0.0.2". i i'd also consider if
deleting just 127.0.0.1 and replacing it with 127.0.0.2 if it makes
more sense.
Just overwrite the old file with the new, complete, data.
> 2. overwrite the data (case: file exists but data needs to be updated).
You can use the same code. It will overwrite the current file with the
new data.
>
> eg, let's say my ip changed to 127.0.0.2. i want to delete "#ip
> 127.0.0.1" and replace it with "#ip 127.0.0.2". i i'd also consider if
> deleting just 127.0.0.1 and replacing it with 127.0.0.2 if it makes
> more sense.
Just overwrite the old file with the new, complete, data.
thanks for the tip. at first glance, though, i'm thinking i want to
delete only the line(s) that change. eg, if the i line changes, i
don't want to read in the whole file, i'd prefer to just overwrite the #ip line.
is this doable? if so, is it too much trouble for a short file like
this one?
i perused the linked references, but didn't find a way to delete a
specific line and replace it.
James Britt wrote:
> Skeets wrote:
>
> >
> > what i don't know how to do is to...
> >
> > 1. write this data to a newly created file (case: file doesn't exist)
>
> File.open( some_file_name, 'w'){|f| f.puts(the_data)}
>
> > 2. overwrite the data (case: file exists but data needs to be updated).
> You can use the same code. It will overwrite the current file with the
> new data.
>
> >
> > eg, let's say my ip changed to 127.0.0.2. i want to delete "#ip
> > 127.0.0.1" and replace it with "#ip 127.0.0.2". i i'd also consider if
> > deleting just 127.0.0.1 and replacing it with 127.0.0.2 if it makes
> > more sense.
>
> Just overwrite the old file with the new, complete, data.
thanks for the tip. at first glance, though, i'm thinking i want to
delete only the line(s) that change. eg, if the i line changes, i
don't want to read in the whole file, i'd prefer to just overwrite the #ip line.
is this doable? if so, is it too much trouble for a short file like
this one?
i perused the linked references, but didn't find a way to delete a
specific line and replace it.
thanks again.
Load the whole file that you want to change into an array.
Each element of the array is a line of the file.
Change a line.
Write the lines back to the file.
2. overwrite the data (case: file exists but data needs to be updated).
You can use the same code. It will overwrite the current file with the
new data.
eg, let's say my ip changed to 127.0.0.2. i want to delete "#ip
127.0.0.1" and replace it with "#ip 127.0.0.2". i i'd also consider if
deleting just 127.0.0.1 and replacing it with 127.0.0.2 if it makes
more sense.
Just overwrite the old file with the new, complete, data.
thanks for the tip. at first glance, though, i'm thinking i want to
delete only the line(s) that change. eg, if the i line changes, i
don't want to read in the whole file, i'd prefer to just overwrite the #ip line.
is this doable? if so, is it too much trouble for a short file like
this one?
i perused the linked references, but didn't find a way to delete a
specific line and replace it.
thanks again.
Load the whole file that you want to change into an array.
Each element of the array is a line of the file.
Change a line.
Write the lines back to the file.
Here's another alternative: use "ruby -i.bak" to change the file in place, like