Here's my go:
File.read(some_file).to_a.map { |l| line.split.last }
What if I wanted to search the lines (based on a regex) and return the
last word in each line that satisfied the search criteria?
Joe
> File.read(some_file).to_a.map { |l| line.split.last }
>
> What if I wanted to search the lines (based on a regex) and return the
> last word in each line that satisfied the search criteria?
What about
File.read(some_file).to_a.map { |l| line.split.select {|v| v =~
/regex/}.last }
Vince
Well, there's #readlines...
File.readlines('somefile').map {|f| f.split.last}
..which is a little nicer.
> What if I wanted to search the lines (based on a regex) and return the
> last word in each line that satisfied the search criteria?
File.readlines('somefile').map do |f|
next unless f =~ /regex/
f.split.last
end
But you'll have nils everywhere that a line was next'ed over...
File.readlines('somefile').reject{|f| f !~ /regex/}.map {|f| f.split.last}
Someone else might have an elegant solution, but these will work :)
Ben
--
Posted via http://www.ruby-forum.com/.
line[/(\w+)\s*$/, 1]
might be faster than line.split.last. Worth trying anway.
--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407
At Wed, 13 Sep 2006 06:57:47 +0900,
Joe Van Dyk wrote in [ruby-talk:214152]:
> File.read(some_file).to_a.map { |l| line.split.last }
$ ruby -e 'p open(ARGV[0]){|f|f.grep(/(\w+)\s*$/){$1}}' version.h
["190", "20060912", "1", "9", "0", "2006", "9", "12"]
--
Nobu Nakada