#! /usr/bin/gawk -f # Last edited on 2003-10-12 12:32:56 by stolfi # Performs an egrep-like search on a VM folder, # and prints the dates of all matching messages. BEGIN { usage = ( ARGV[0] " -v pat=PATTERN FILE..." ) abort = -1; if (pat == "") { error("must define \"pat\""); } omsgstart = ""; curfile = ""; } (abort >= 0) { exit(abort); } /^From +[^ ]+ +[A-Za-z][a-z][a-z] +[A-Za-z][a-z][a-z] +[0-9]+ [0-9][0-9]:/ { newmessage(FNR, $0); } /^Date:/ { dt = $0; } /^From:/ { fr = $0; } //{ if (FILENAME != curfile) { newmessage(0, "**before first message**"); } if (match($0, pat)) { if (msgstart != omsgstart) { if (omsgstart != "") { printf "\n"; } printf "--- %s ------------------\n", msgstart; printf "%s\n", frdt; if (fr != "") { printf "%s\n", fr; } if (dt != "") { printf "%s\n", dt; } omsgstart = msgstart; } print; } next; } function newmessage(lineno, lin) { frdt = lin; dt = ""; fr = ""; curfile = FILENAME; msgstart = (curfile ":" lineno); } function error(msg) { printf "** %s\n", msg > "/dev/stderr"; abort = 1; exit(abort); }