#!/usr/bin/python -tt # # Read my aliases file, which has the form: # key,... aliasname name
# and generate aggregate lines with regexps for massaging into cats lines. # - Cameron Simpson 30oct2005 # import sys import re import string from cs.misc import chomp # crude address parsers RE_ADDR1=re.compile('<(.*@.*)>') RE_ADDR2=re.compile('\(.*\) *(.*@.*)') RE_ADDR3=re.compile('(.*@.*) *\(.*\)') RE_ADDR4=re.compile('(.*@.*)') xrefs={} for line in sys.stdin: line=chomp(line) (cats,alias,addr)=string.split(line,None,2) if len(cats) == 0 or cats[0] == '#': continue m=RE_ADDR1.search(addr) if not m: m=RE_ADDR2.search(addr) if not m: m=RE_ADDR3.search(addr) if not m: m=RE_ADDR4.search(addr) if not m: ## PLUG ## print "can't match", addr continue addr=m.group(1) addr=string.lower(addr) for cat in string.split(cats,','): pair=(alias,addr) if cat not in xrefs: xrefs[cat]=[pair] else: xrefs[cat].append(pair) cats=xrefs.keys() cats.sort() for cat in cats: ucat=string.upper(cat) pairs=xrefs[cat] pairs.sort for pair in pairs: print ucat, pair[0], pair[1]