Guido van Rossum | 217a5fa | 1990-12-26 15:40:07 +0000 | [diff] [blame] | 1 | # 'grep' |
| 2 | |
| 3 | import regexp |
| 4 | import string |
| 5 | |
| 6 | def grep(expr, filename): |
| 7 | prog = regexp.compile(expr) |
| 8 | fp = open(filename, 'r') |
| 9 | lineno = 0 |
| 10 | while 1: |
| 11 | line = fp.readline() |
| 12 | if not line: break |
| 13 | lineno = lineno + 1 |
| 14 | res = prog.exec(line) |
| 15 | if res: |
| 16 | #print res |
| 17 | start, end = res[0] |
| 18 | if line[-1:] = '\n': line = line[:-1] |
| 19 | prefix = string.rjust(`lineno`, 3) + ': ' |
| 20 | print prefix + line |
| 21 | if 0: |
| 22 | line = line[:start] |
| 23 | if '\t' not in line: |
| 24 | prefix = ' ' * (len(prefix) + start) |
| 25 | else: |
| 26 | prefix = ' ' * len(prefix) |
| 27 | for c in line: |
| 28 | if c <> '\t': c = ' ' |
| 29 | prefix = prefix + c |
| 30 | if start = end: prefix = prefix + '\\' |
| 31 | else: prefix = prefix + '^'*(end-start) |
| 32 | print prefix |