#! /usr/bin/python # Este programa se llama cgrep®. Busca regexpresiones por fichero o por # el stdin, mostrando todas las linea pero resaltando en color las lineas # que cumplan la regexpresion dada # © Eduardo Ferro Aldama (SICE) 2001. # Este programa se distribuye segun la licencia GPL v.2 o posteriores y no tiene # garantias de ningun tipo. Puede obtener una copia de la licencia GPL o ponerse en # contacto con la Free Software Foundation en http://ww.gnu.org # $Author: eferro $ # $Date: 2001-04-02 19:02:51 +0200 (lun, 02 abr 2001) $ # $Log$ # Revision 1.1 2001/04/02 17:02:51 eferro # Añadidos los fuentes que tenemos en la seccion de programacion # # Revision 1.1 2001/04/02 12:19:52 eferro # Cambiado de nombre al fichero de cgrep a cgrep.py # import getopt, os, string, sys, re # Cadenas estaticas informativas o de configuracion strNombre = 'cgrep' strAutor = 'Eduardo Ferro' strCopyright = 'Eduardo Ferro Aldama (SICE) 2001 ©' strLicencia = 'GPL v2.0 o posterior' strVersion = '$Revision: 92 $' strDescripcion = 'Permite realizar busquedas coloreando los resultados' AnsiColor = {'normal': "",'negrita': "", 'negro': "",'rojo': "",'verde': "", 'amarillo': "",'azul': "",'magenta': "", 'cyan': "",'blanco': ""} #--------------------------------------------------------- def copyright(): print strNombre + ' ' + strVersion print strCopyright print 'Licencia: ' + strLicencia #--------------------------------------------------------- #--------------------------------------------------------- def uso(): print os.path.basename(sys.argv[0]) + '[-e exp]...' sys.exit(0) #--------------------------------------------------------- #--------------------------------------------------------- def opciones(): try: options, args = getopt.getopt(sys.argv[1:], "e:h",["help", "version"]) except: uso() lstExpresiones = [] for option, value in options: if option == "-e": lstExpresiones.append(value) if option in ["-h", "--help"]: uso() return lstExpresiones #--------------------------------------------------------- #--------------------------------------------------------- def main(): copyright() lstExpresiones = opciones() lstExpComp = [] bFinal = 'False' # Compilamos todas las expresiones # para luego poder busca mas rapido for exp in lstExpresiones: lstExpComp.append(re.compile(exp)) while bFinal == 'False': strLinea = sys.stdin.readline() if strLinea == '': bFinal = 'True' else: # Buscamos alguna las expresiones # para ver si tenemos que cambiar # de color o no bEncontrado = 'False' for exp in lstExpComp: if exp.search(strLinea) != None: # Hemos encontrado la linea bEncontrado = 'True' break if bEncontrado == 'True': sys.stdout.write(AnsiColor['rojo']) sys.stdout.write(strLinea) sys.stdout.write(AnsiColor['normal']) else: sys.stdout.write(strLinea) #--------------------------------------------------------- if __name__ == "__main__": main()