Reputation: 32933
I'm trying to write a rake task to scan through some zipped up log files and extract some data that i can then use to update some database records. Because of space limitations on our server i can't unzip all of the files and just call File.readlines on them which is what i would normally do.
Can anyone suggest an alternative approach that doesn't involve unzipping the files? What i need to do is basically scan for lines matching a particular regex, then extract some text from the line AFTER the matched line. They are all gzipped, and are therefore .gz files.
Upvotes: 0
Views: 137
Reputation: 4398
You can open the gzipped file using Ruby, and perform your searching as if you had opened the file as normal, like this:
require 'zlib'
Zlib::GzipReader.open("myfile.gz") { |gz|
# place your code here, something like:
p gz.readlines.grep /my-magic-marker/
}
This will load the entire file in memory, beware of that.
Upvotes: 1