Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Is there a easy way to find and replay a match

1 view
Skip to first unread message

Tor Erik Linnerud

unread,
May 28, 2008, 6:20:50 PM5/28/08
to

> 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/.

Cheyne Li

unread,
May 28, 2008, 7:18:09 PM5/28/08
to
I need "aaa=4" in the file instead of just print out

David Masover

unread,
May 28, 2008, 8:48:36 PM5/28/08
to
On Wednesday 28 May 2008 18:18:09 Cheyne Li wrote:
> 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.

Tor Erik Linnerud

unread,
May 28, 2008, 9:06:47 PM5/28/08
to
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.

Heesob Park

unread,
May 28, 2008, 10:19:28 PM5/28/08
to
Hi,

Cheyne Li wrote:
> Hi,there


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

> Is there a way to do it without iterating each line and find the match,
> then replace it? Thank in advance

ruby -i -pe'gsub(/aaa=100/,"aaa=4")' somefile

Regards,

Park Heesob

Cheyne Li

unread,
May 29, 2008, 5:44:13 PM5/29/08
to
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.
0 new messages