summaryrefslogtreecommitdiffstats
path: root/Lib/grep.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/grep.py')
-rw-r--r--Lib/grep.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/Lib/grep.py b/Lib/grep.py
new file mode 100644
index 0000000..210f9f0
--- /dev/null
+++ b/Lib/grep.py
@@ -0,0 +1,32 @@
+# 'grep'
+
+import regexp
+import string
+
+def grep(expr, filename):
+ prog = regexp.compile(expr)
+ fp = open(filename, 'r')
+ lineno = 0
+ while 1:
+ line = fp.readline()
+ if not line: break
+ lineno = lineno + 1
+ res = prog.exec(line)
+ if res:
+ #print res
+ start, end = res[0]
+ if line[-1:] = '\n': line = line[:-1]
+ prefix = string.rjust(`lineno`, 3) + ': '
+ print prefix + line
+ if 0:
+ line = line[:start]
+ if '\t' not in line:
+ prefix = ' ' * (len(prefix) + start)
+ else:
+ prefix = ' ' * len(prefix)
+ for c in line:
+ if c <> '\t': c = ' '
+ prefix = prefix + c
+ if start = end: prefix = prefix + '\\'
+ else: prefix = prefix + '^'*(end-start)
+ print prefix