Regex & grep-foo

I need a way to grep -v a list of times/date from the output of postqueue -p that are a few hours old, in order to remove them with postsuper -d.

Right now I have a script that is deleting the previous day of messages left in the queue, which runs once each day.

I want to clean up the job and delete every message more than X hours old, every hour.

Right now I'm running :
postqueue -p | grep $(date --date=yesterday +"%a %b") | cut -d" " -f1 | postsuper -d -

Which simply finds the day and month of the message eg."Sun Jan". Ugly, but functional.

The messages are tagged with "DAY MONTH TIME(HH:MM:SS)". How do I go about selecting all the ones that are older than X hours?

You're going beyond grep's comparison capabilities there; I'd use perl and convert them to real times, then do time comparisons.