I need a way of searching a file using grep via a regular expression from the Unix command line. For example when I type in the command line:
python pythonfile.py 'RE' 'file-to-be-searched'
I need the regular expression
'RE' to be searched in the file and print out the matching lines.
Here's the code I have:
import re import sys search_term = sys.argv f = sys.argv for line in open(f, 'r'): if re.search(search_term, line): print line, if line == None: print 'no matches found'
But when I enter a word which isn't present,
no matches found doesn't print
The natural question is why not just use grep?! But assuming you can't...
import re import sys file = open(sys.argv, "r") for line in file: if re.search(sys.argv, line): print line,
Things to note:
matchto find anywhere in string
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, line): print line,