On Tue, Mar 16, 2004 at 07:02:59PM -0500, Our Pal Al wrote: > So in a file with lots of lines like this - > > 3/15/2004 5:58 PM Drogo-OS X (21.177) Macintosh HD -24001 > user canceled 0:34:00 129.85.21.177 > > How can I formulate grep to grab on the mm/dd/yyyy field and pull out "any > lines where the date is no older than 7 days ago"? I made a stab at doing this in perl. It includes the filtering of lines with Successful in them. To understand what is going on requires a bit of perl knowledge that I won't go over now, but if you have specific questions, feel free to ask. $ cat date_grabber.txt 2/3/2004 5:58 PM Drogo-OS X (21.177) 3/1/2004 5:58 PM Drogo-OS X (21.177) 3/11/2004 5:58 PM Drogo-OS X (21.177) Successful 3/12/2004 5:58 PM Drogo-OS X (21.177) 3/13/2004 5:58 PM Drogo-OS X (21.177) 3/14/2004 5:58 PM Drogo-OS X (21.177) 3/15/2004 5:58 PM Drogo-OS X (21.177) Successful 3/16/2004 5:58 PM Drogo-OS X (21.177) $ ./date_grabber.pl < date_grabber.txt 3/12/2004 5:58 PM Drogo-OS X (21.177) 3/13/2004 5:58 PM Drogo-OS X (21.177) 3/14/2004 5:58 PM Drogo-OS X (21.177) 3/16/2004 5:58 PM Drogo-OS X (21.177) $ cat date_grabber.pl #! /usr/bin/perl use strict; use warnings; use POSIX qw(strftime); my $time = time; my %allowed_dates; # setup our allowed date range. foreach (0 .. 7) { my $date = &strftime("%m/%d/%Y", localtime $time); $allowed_dates{$date} = 1; $time -= 86_400; } while (<STDIN>) { # should be the same as grep -v Successful next if /Successful/; # try and parse out a date. quit processing if none is found. unless ($_ =~ m#(\d+)/(\d+)/(\d+)#) { die "Invalid line found: $_"; } # make the day and month "right-justified" with zeros my $date = sprintf("%02d/%02d/%4d", $1, $2, $3); # skip lines that don't match our criteria from above next unless $allowed_dates{$date}; print; } $ -- ~`^`'~=-._.-=~'`^`'~=-._.-=~'^'~=-., \|/ (___) \|/ _,.-=~'`^` @~./'O o`\.~@ "Knowledge is Power" /__( \___/ )__\ *PPPFFBT!* -- Francis Bacon `\__`U_/' _.-=~'``'~=-._.-=~'``'~=-._.-=~'`^`'~= <____|' ^^`'~=-.,__,.-= ~'^`'~=-._.-=~'`^`'~=-._.-=~'^'~=-.,__,.-==--^'~=-.,__,.-=~'`^`