Mercurial > cpython-lru_cache-weakref
annotate Lib/grep.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 43c86d1eb22c |
| children | 6c5f7e74fa88 |
| rev | line source |
|---|---|
| 103 | 1 # 'grep' |
| 2 | |
|
542
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
3 import regex |
|
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
4 from regex_syntax import * |
| 103 | 5 import string |
| 6 | |
|
576
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
7 opt_show_where = 0 |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
8 opt_show_filename = 0 |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
9 opt_show_lineno = 1 |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
10 |
|
807
43c86d1eb22c
Use *args syntax instead of +args
Guido van Rossum <guido@python.org>
parents:
576
diff
changeset
|
11 def grep(pat, *files): |
|
576
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
12 return ggrep(RE_SYNTAX_GREP, pat, files) |
|
542
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
13 |
|
807
43c86d1eb22c
Use *args syntax instead of +args
Guido van Rossum <guido@python.org>
parents:
576
diff
changeset
|
14 def egrep(pat, *files): |
|
576
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
15 return ggrep(RE_SYNTAX_EGREP, pat, files) |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
16 |
|
807
43c86d1eb22c
Use *args syntax instead of +args
Guido van Rossum <guido@python.org>
parents:
576
diff
changeset
|
17 def emgrep(pat, *files): |
|
576
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
18 return ggrep(RE_SYNTAX_EMACS, pat, files) |
|
542
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
19 |
|
576
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
20 def ggrep(syntax, pat, files): |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
21 if len(files) == 1 and type(files[0]) == type([]): |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
22 files = files[0] |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
23 global opt_show_filename |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
24 opt_show_filename = (len(files) != 1) |
|
542
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
25 syntax = regex.set_syntax(syntax) |
|
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
26 try: |
|
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
27 prog = regex.compile(pat) |
|
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
28 finally: |
|
b586189cc1f5
Adapted to new "regex" module.
Guido van Rossum <guido@python.org>
parents:
358
diff
changeset
|
29 syntax = regex.set_syntax(syntax) |
|
576
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
30 for filename in files: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
31 fp = open(filename, 'r') |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
32 lineno = 0 |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
33 while 1: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
34 line = fp.readline() |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
35 if not line: break |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
36 lineno = lineno + 1 |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
37 if prog.search(line) >= 0: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
38 showline(filename, lineno, line, prog) |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
39 fp.close() |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
40 |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
41 def showline(filename, lineno, line, prog): |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
42 if line[-1:] == '\n': line = line[:-1] |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
43 if opt_show_lineno: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
44 prefix = string.rjust(`lineno`, 3) + ': ' |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
45 else: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
46 prefix = '' |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
47 if opt_show_filename: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
48 prefix = filename + ': ' + prefix |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
49 print prefix + line |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
50 if opt_show_where: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
51 start, end = prog.regs()[0] |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
52 line = line[:start] |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
53 if '\t' not in line: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
54 prefix = ' ' * (len(prefix) + start) |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
55 else: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
56 prefix = ' ' * len(prefix) |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
57 for c in line: |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
58 if c <> '\t': c = ' ' |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
59 prefix = prefix + c |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
60 if start == end: prefix = prefix + '\\' |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
61 else: prefix = prefix + '^'*(end-start) |
|
3b8f41f96eb4
Now uses varargs syntax to grep more than one file.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
62 print prefix |
