Should they be left blank or filled with the previous match for that pattern.
Like the previous versions, if the new file didn't found any match it would appear as blank. I think thats a good aproach since a missing item often mean its "blank".
What determines whether a whole set should be deemed ready for output? At the moment we're looking at each time the first pattern is found, we look to see if all patterns have been found already, output the results, reset the cache and continue in the file. Maybe this should be the last pattern.
I guess that the first pattern could work, if it finds a new first pattern or EOF consider it to be a complete record and starts a new one.