Checking File for a line

Need to check a file for a line
Lets say “this is an example”

I am going to just take every line into an array
and then have a For loop to check the array for that line.

Im pretty sure this will work but is there any cleaner way to do it?

Peter L. wrote:

Im pretty sure this will work but is there any cleaner way to do it?

File.readlines('file.txt.).each do |line|
puts ‘got it!’ if line =~ /regexp/
end

Hope the helps.

Regards,
Lee

2007/11/23, Lee J. [email protected]:

Peter L. wrote:

Im pretty sure this will work but is there any cleaner way to do it?

File.readlines('file.txt.).each do |line|
puts ‘got it!’ if line =~ /regexp/
end

This is more efficient - no need to load the whole file into mem to
find a single line:

File.foreach “file.txt” do |line|
if /rx/ =~ line
puts “found it”
break
end
end

Cheers

robert

On Nov 23, 1:08 pm, Robert K. [email protected] wrote:

find a single line:
robert


use.inject do |as, often| as.you_can - without end

Check out

ri IO:foreach
ri IO#each

and use what more suits your needs.

Dima

2007/11/23, Dejan D. [email protected]:

This is more efficient - no need to load the whole file into mem to

and use what more suits your needs.
I am not sure I understand this posting of yours. Are you talking to
the OP or to me? If you are talking to me, foreach is what I used in
the example above.

robert

This is more efficient - no need to load the whole file into mem to
find a single line:

File.foreach “file.txt” do |line|
if /rx/ =~ line
puts “found it”
break
end
end

Cheers

robert

Ahh, good point, touche my good man.

Regards,
Lee

2007/11/23, Lee J. [email protected]:

Cheers

robert

Ahh, good point, touche my good man.

While we’re at it: there is another solution - probably a bit more
elegant:

require ‘enumerator’
File.to_enum(:foreach,“file.txt”).grep(/rx/) {|li| puts li; break}

:slight_smile:

Kind regards

robert

On Nov 24, 8:58 am, Robert K. [email protected] wrote:

end
File.to_enum(:foreach,“file.txt”).grep(/rx/) {|li| puts li; break}

:slight_smile:

Kind regards

robert


use.inject do |as, often| as.you_can - without end

That’s Ruby beauty, express yourself in a way that suits you the most
and still we all can understand your dialect and enjoy.

Dima

Dejan D. wrote:

On Nov 24, 8:58 am, Robert K. [email protected] wrote:

end
File.to_enum(:foreach,“file.txt”).grep(/rx/) {|li| puts li; break}

:slight_smile:

Kind regards

robert


use.inject do |as, often| as.you_can - without end

That’s Ruby beauty, express yourself in a way that suits you the most
and still we all can understand your dialect and enjoy.

Speak for yourself. I found that solution particularly distasteful. It
turned a simple, easy to read solution, into a convoluted one-liner
mess. And on my system the enumerator solution is 50% slower. But,
that seems to be the Ruby Way, so at some point I guess I’ll have to
drink the koolaid and declare how beautiful solutions like that are.