Skip to content

Instantly share code, notes, and snippets.

@erikh
Created January 5, 2010 19:39
Show Gist options
  • Save erikh/269638 to your computer and use it in GitHub Desktop.
Save erikh/269638 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
require 'pp'
log = File.open('access.log', 'r')
begin
lines = []
5.times do
line = log.readline
parts = line.split(/\s+/)
parts[3] += " " + parts.delete_at(4)
cat_idx = 0
closed = true
old_parts = parts[0..3]
parts = parts[4..-1]
new_parts = [""]
while !parts.empty? do
part = parts.shift
if part =~ /^"/ and closed
new_parts.push part
cat_idx = new_parts.length - 1
closed = false unless part =~ /"$/
elsif !closed
new_parts[cat_idx] += " " + part
if part =~ /"$/
closed = true
end
else
new_parts.push part
end
end
parts = old_parts + new_parts
parts.each { |x| x.sub!(/^"/, ''); x.sub!(/"$/, '') }
lines.push old_parts + new_parts
end
pp lines
rescue EOFError
end
log.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment