⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grep.py

📁 minimal python variant for small footprint apps like embedded apps
💻 PY
字号:
# 'grep'import regexfrom regex_syntax import *import stringopt_show_where = 0opt_show_filename = 0opt_show_lineno = 1def grep(pat, *files):	return ggrep(RE_SYNTAX_GREP, pat, files)def egrep(pat, *files):	return ggrep(RE_SYNTAX_EGREP, pat, files)def emgrep(pat, *files):	return ggrep(RE_SYNTAX_EMACS, pat, files)def ggrep(syntax, pat, files):	if len(files) == 1 and type(files[0]) == type([]):		files = files[0]	global opt_show_filename	opt_show_filename = (len(files) != 1)	syntax = regex.set_syntax(syntax)	try:		prog = regex.compile(pat)	finally:		syntax = regex.set_syntax(syntax)	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) >= 0:				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:		prefix = string.rjust(`lineno`, 3) + ': '	else:		prefix = ''	if opt_show_filename:		prefix = filename + ': ' + prefix	print prefix + line	if opt_show_where:		start, end = prog.regs()[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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -