]> granicus.if.org Git - python/commitdiff
Added pgrep() function, which is like grep/egrep/emgrep but uses Perl
authorGuido van Rossum <guido@python.org>
Wed, 22 Oct 1997 20:44:58 +0000 (20:44 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 22 Oct 1997 20:44:58 +0000 (20:44 +0000)
syntax, by virtue of the new re module.

Lib/grep.py
Lib/lib-old/grep.py

index f4666512b70ea5fdd713a8518c376186f931e817..423c065af78507f732667f3640ab5d84a744d7ce 100644 (file)
@@ -38,6 +38,24 @@ def ggrep(syntax, pat, files):
                                showline(filename, lineno, line, prog)
                fp.close()
 
+def pgrep(pat, *files):
+       if len(files) == 1 and type(files[0]) == type([]):
+               files = files[0]
+       global opt_show_filename
+       opt_show_filename = (len(files) != 1)
+       import re
+       prog = re.compile(pat)
+       for filename in files:
+               fp = open(filename, 'r')
+               lineno = 0
+               while 1:
+                       line = fp.readline()
+                       if not line: break
+                       lineno = lineno + 1
+                       if prog.search(line):
+                               showline(filename, lineno, line, prog)
+               fp.close()
+
 def showline(filename, lineno, line, prog):
        if line[-1:] == '\n': line = line[:-1]
        if opt_show_lineno:
index f4666512b70ea5fdd713a8518c376186f931e817..423c065af78507f732667f3640ab5d84a744d7ce 100644 (file)
@@ -38,6 +38,24 @@ def ggrep(syntax, pat, files):
                                showline(filename, lineno, line, prog)
                fp.close()
 
+def pgrep(pat, *files):
+       if len(files) == 1 and type(files[0]) == type([]):
+               files = files[0]
+       global opt_show_filename
+       opt_show_filename = (len(files) != 1)
+       import re
+       prog = re.compile(pat)
+       for filename in files:
+               fp = open(filename, 'r')
+               lineno = 0
+               while 1:
+                       line = fp.readline()
+                       if not line: break
+                       lineno = lineno + 1
+                       if prog.search(line):
+                               showline(filename, lineno, line, prog)
+               fp.close()
+
 def showline(filename, lineno, line, prog):
        if line[-1:] == '\n': line = line[:-1]
        if opt_show_lineno: