4 from regex_syntax
import *
10 def grep(pat
, *files
):
11 return ggrep(RE_SYNTAX_GREP
, pat
, files
)
13 def egrep(pat
, *files
):
14 return ggrep(RE_SYNTAX_EGREP
, pat
, files
)
16 def emgrep(pat
, *files
):
17 return ggrep(RE_SYNTAX_EMACS
, pat
, files
)
19 def ggrep(syntax
, pat
, files
):
20 if len(files
) == 1 and type(files
[0]) == type([]):
22 global opt_show_filename
23 opt_show_filename
= (len(files
) != 1)
24 syntax
= regex
.set_syntax(syntax
)
26 prog
= regex
.compile(pat
)
28 syntax
= regex
.set_syntax(syntax
)
29 for filename
in files
:
30 fp
= open(filename
, 'r')
36 if prog
.search(line
) >= 0:
37 showline(filename
, lineno
, line
, prog
)
40 def pgrep(pat
, *files
):
41 if len(files
) == 1 and type(files
[0]) == type([]):
43 global opt_show_filename
44 opt_show_filename
= (len(files
) != 1)
46 prog
= re
.compile(pat
)
47 for filename
in files
:
48 fp
= open(filename
, 'r')
55 showline(filename
, lineno
, line
, prog
)
58 def showline(filename
, lineno
, line
, prog
):
59 if line
[-1:] == '\n': line
= line
[:-1]
61 prefix
= `lineno`
.rjust(3) + ': '
65 prefix
= filename
+ ': ' + prefix
68 start
, end
= prog
.regs()[0]
71 prefix
= ' ' * (len(prefix
) + start
)
73 prefix
= ' ' * len(prefix
)
77 if start
== end
: prefix
= prefix
+ '\\'
78 else: prefix
= prefix
+ '^'*(end
-start
)