Forum: Ruby search and replace text in files

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Phil S. (Guest)
on 2007-05-03 21:21
(Received via mailing list)
I need to search a file for text "InstallDir=" + newline character and
replace it with something like:  InstallDir=C\:\\mws71 + newline

My own experimentation with this had problems with writing the back-
slashes to the file (it's a requirement of the format to have the back-
slashes as in my example).  The string had the back-slashes in it but
they didn't get persisted to the file correctly.

Are there any libraries that perform a search and replace?

thanks
phil
Suraj K. (Guest)
on 2007-05-03 22:16
Phil S. wrote:
> I need to search a file for text "InstallDir=" + newline character and
> replace it with something like:  InstallDir=C\:\\mws71 + newline

>> "InstallDir=\n".gsub /(InstallDir=)(\n)/, '\1C\:\mws71\2'
=> "InstallDir=C\\:\\mws71\n"

> My own experimentation with this had problems with writing the back-
> slashes to the file (it's a requirement of the format to have the back-
> slashes as in my example).  The string had the back-slashes in it but
> they didn't get persisted to the file correctly.

In a single-quoted string, one backslash outputs one backslash.
In a double-quoted string, two backslashes outputs one backslash.

>> '\ '
=> "\\ "

>> "\\ "
=> "\\ "

> Are there any libraries that perform a search and replace?

String#gsub
Brian C. (Guest)
on 2007-05-03 23:04
(Received via mailing list)
On Fri, May 04, 2007 at 03:16:37AM +0900, Suraj K. wrote:
> > they didn't get persisted to the file correctly.
>
> In a single-quoted string, one backslash outputs one backslash.

Except where followed by a single quote or another backslash.

irb(main):001:0> '\\'.length
=> 1
irb(main):002:0> '\''.length
=> 1
irb(main):003:0> '\n'.length
=> 2
Phil S. (Guest)
on 2007-05-03 23:36
(Received via mailing list)
> > Are there any libraries that perform a search and replace?
>
> String#gsub
>


I meant on a file... I was looking for something like
File.search_and_replace(file_name, regex_search, replace_string)

But I guess I can simply pull a file into a string and then do a gsub
and write the file out.

Thanks,
phil
This topic is locked and can not be replied to.