4 from regex_syntax
import *
11 def grep(pat
, *files
):
12 return ggrep(RE_SYNTAX_GREP
, pat
, files
)
14 def egrep(pat
, *files
):
15 return ggrep(RE_SYNTAX_EGREP
, pat
, files
)
17 def emgrep(pat
, *files
):
18 return ggrep(RE_SYNTAX_EMACS
, pat
, files
)
20 def ggrep(syntax
, pat
, files
):
21 if len(files
) == 1 and type(files
[0]) == type([]):
23 global opt_show_filename
24 opt_show_filename
= (len(files
) != 1)
25 syntax
= regex
.set_syntax(syntax
)
27 prog
= regex
.compile(pat
)
29 syntax
= regex
.set_syntax(syntax
)
30 for filename
in files
:
31 fp
= open(filename
, 'r')
37 if prog
.search(line
) >= 0:
38 showline(filename
, lineno
, line
, prog
)
41 def pgrep(pat
, *files
):
42 if len(files
) == 1 and type(files
[0]) == type([]):
44 global opt_show_filename
45 opt_show_filename
= (len(files
) != 1)
47 prog
= re
.compile(pat
)
48 for filename
in files
:
49 fp
= open(filename
, 'r')
56 showline(filename
, lineno
, line
, prog
)
59 def showline(filename
, lineno
, line
, prog
):
60 if line
[-1:] == '\n': line
= line
[:-1]
62 prefix
= string
.rjust(`lineno`
, 3) + ': '
66 prefix
= filename
+ ': ' + prefix
69 start
, end
= prog
.regs()[0]
72 prefix
= ' ' * (len(prefix
) + start
)
74 prefix
= ' ' * len(prefix
)
78 if start
== end
: prefix
= prefix
+ '\\'
79 else: prefix
= prefix
+ '^'*(end
-start
)