#!/usr/bin/ruby -w # $ time ruby ruby-solution.rb # # real 0m0.168s # user 0m0.142s # sys 0m0.022s WORKDIR="/tmp" WORKFILE="/tmp/access_log.ends.01May05" ALIASES="/tmp/aliases" # populate hash of alias -> filehandle fh = {} File.open(ALIASES).each { |line| a = line.split(' ')[1] fh[a] = File.open(WORKDIR+"/log"+a.tr('/','_'), "w") } fh['/'] = File.open(WORKDIR+"/log_catchall","w") File.open(WORKFILE).each { |line| hit = line.split(' ')[6] begin if fh[hit] then fh[hit].write(line) break end hit = File.dirname(hit) end until false } fh.each { |k,v| v.close }