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:
searchinstead ofmatchto find anywhere in string- comma (
,) afterprintremoves carriage return (line will have one) argvincludes 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:
import re
import sys
import glob
for arg in sys.argv[2:]:
for file in glob.iglob(arg):
for line in open(file, 'r'):
if re.search(sys.argv[1], line):
print line,