Is there a easy way to find and replay a match

If I have file and has a line is "aaa=100", and need to replace it as
"aaa=4".

puts File.read('somefile')

foo
aaa=100
bar

puts File.read('somefile').sub('aaa=100', 'aaa=4')

foo
aaa=4
bar

Tor Erik

···

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

I need "aaa=4" in the file instead of just print out

Tor Erik Linnerud wrote:

···

If I have file and has a line is "aaa=100", and need to replace it as
"aaa=4".

puts File.read('somefile')

foo
aaa=100
bar

puts File.read('somefile').sub('aaa=100', 'aaa=4')

foo
aaa=4
bar

Tor Erik

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

I need "aaa=4" in the file instead of just print out

No offense, but this was pretty much handed to you. You should be able to get
the rest of the way yourself...

>> print File.read('somefile').sub('aaa=100', 'aaa=4')

string = File.read('somefile').sub('aaa=100','aaa=4')
open('somefile','w'){|f| f.write string}

By the way: DON'T do it this way in a real program. It's not at all safe.
Learn about temporary files and file IO.

···

On Wednesday 28 May 2008 18:18:09 Cheyne Li wrote:

Cheyne Li wrote:

I need "aaa=4" in the file instead of just print out

File.open('somefile', 'r+') do |file|
  content = file.read.sub('aaa=100', 'aaa=4')
  file.seek(0)
  file.write(content)
}

Read more about File at
http://www.ruby-doc.org/core/classes/File.html

although this documentation isn't the easiest to follow.

Tor Erik

···

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

Thanks a lot, it really helped. But I don't know why if i use regular
expression to match the pattern "aaa=.*", it's not working with sub, but
gsub.

Tor Erik Linnerud wrote:

···

Cheyne Li wrote:

I need "aaa=4" in the file instead of just print out

File.open('somefile', 'r+') do |file|
  content = file.read.sub('aaa=100', 'aaa=4')
  file.seek(0)
  file.write(content)
}

Read more about File at
class File - RDoc Documentation

although this documentation isn't the easiest to follow.

Tor Erik

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