#!/usr/bin/env python import re import fileinput import argparse from glob import glob # <1> from itertools import chain # <2> arg_parser = argparse.ArgumentParser(description="Emulate grep with python") # <3> arg_parser.add_argument( '-i', dest='ignore_case', action='store_true', help='ignore case' ) # <4> arg_parser.add_argument( 'pattern', help='Pattern to find (required)' ) # <5> arg_parser.add_argument( 'filenames', nargs='*', help='filename(s) (if no files specified, read STDIN)' ) # <6> args = arg_parser.parse_args() # <7> print('-' * 40) print(args) print('-' * 40) regex = re.compile(args.pattern, re.I if args.ignore_case else 0) # <8> filename_gen = (glob(f) for f in args.filenames) # <9> filenames = chain.from_iterable(filename_gen) # <10> for line in fileinput.input(filenames): # <11> if regex.search(line): print(line.rstrip())