Counting words / lines in Ruby
Some notes: 


Those counter classes are probably overkill, keep it simple. 
Ruby is an OOP language, but it's not necessary to create a bunch of classes  for simple scripts like this.
Idiomatic: if not x -> if !x
Idiomatic: { ... } for one-line blocks, do/end for multi-line.


I'd write:

fail("Usage: #{0} PATH (lines|words|find REGEXP)") unless ARGV.size &gt;= 2
path, mode, optional_regexp = ARGV

open(path) do |fd|
  case mode
  when "lines"
    puts(fd.lines.count)
  when "words"
    puts(fd.lines.map { |line| line.split.size }.reduce(0, :+))
  when "find"
    if optional_regexp
      fd.lines.each { |line| puts(line) if line.match(optional_regexp) }
    else
      fail("mode find requires a REGEXP argument")
    end
  else
    fail("Unknown mode: #{mode}")
  end
end