Естественный вопрос: почему бы просто не использовать grep ?! Но при условии, что вы не можете ...
import re
import sys
file = open(sys.argv[2], "r")
for line in file:
if re.search(sys.argv[1], line):
print line,
На что обратить внимание:
search
вместо match
для поиска где-либо в строке
- запятая (
,
) после print
удаляет возврат каретки (строка будет иметь один)
argv
включает имя файла python, поэтому переменные должны начинаться с 1
Это не обрабатывает несколько аргументов (как это делает grep) и не расширяет подстановочные знаки (как это сделала бы оболочка Unix). Если вам нужна эта функциональность, вы можете получить ее, используя следующее:
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,