blob: 210f9f008a14db3cd285ab83092cc4b07cbd85f3 [file] [log] [blame]
Guido van Rossum217a5fa1990-12-26 15:40:07 +00001# 'grep'
2
3import regexp
4import string
5
6def 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