The natural question is why not just use grep?! But assuming you can’t…
import re
import sys
file = open(sys.argv[2], "r")
for line in file:
if re.search(sys.argv[1], line):
print line,
Things to note:
search
instead ofmatch
to find anywhere in string- comma (
,
) afterprint
removes carriage return (line will have one) argv
includes python file name, so variables need to start at 1
This doesn’t handle multiple arguments (like grep does) or expand wildcards (like the Unix shell would). If you wanted this functionality you could get it using the following:
#!/usr/bin/env python3
import re
import sys
import glob
regexp = re.compile(sys.argv[1])
for arg in sys.argv[2:]:
for fn in glob.iglob(arg):
with open(fn) as file:
for line in file:
if re.search(regexp, line):
print(line, end='')