Files
2025-05-20 11:57:43 -04:00

39 lines
907 B
Python

#!/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())