#! /usr/bin/env python3"""Reverse grep.Usage: rgrep [-i] pattern file"""import sysimport reimport getoptdef main():bufsize = 64 * 1024reflags = 0opts, args = getopt.getopt(sys.argv[1:], "i")for o, a in opts:if o == '-i':reflags = reflags | re.IGNORECASEif len(args) < 2:usage("not enough arguments")if len(args) > 2:usage("exactly one file argument required")pattern, filename = argstry:prog = re.compile(pattern, reflags)except re.error as msg:usage("error in regular expression: %s" % msg)try:f = open(filename)except IOError as msg:usage("can't open %r: %s" % (filename, msg), 1)f.seek(0, 2)pos = f.tell()leftover = Nonewhile pos > 0:size = min(pos, bufsize)pos = pos - sizef.seek(pos)buffer = f.read(size)lines = buffer.split("\n")del bufferif leftover is None:if not lines[-1]:del lines[-1]else:lines[-1] = lines[-1] + leftoverif pos > 0:leftover = lines[0]del lines[0]else:leftover = Nonefor line in reversed(lines):if prog.search(line):print(line)def usage(msg, code=2):sys.stdout = sys.stderrprint(msg)print(__doc__)sys.exit(code)if __name__ == '__main__':main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。