我需要一种从Unix命令行通过正则表达式使用grep搜索文件的方法。例如,当我在命令行中键入:
python pythonfile.py 'RE' 'file-to-be-searched'
我需要在文件中搜索正则表达式'RE'
,并打印出匹配的行。
这是我的密码:
import re
import sys
search_term = sys.argv[1]
f = sys.argv[2]
for line in open(f, 'r'):
if re.search(search_term, line):
print line,
if line == None:
print 'no matches found'
但是当我输入一个不存在的单词时,no matches found
不会打印
简洁高效:
它的工作方式类似于egrep(没有太多错误处理),例如:
这是一行:
自然的问题是为什么不直接使用grep?!但如果你不能。。。
注意事项:
search
而不是match
来查找字符串中的任何位置,
)在print
删除回车后(行将有一个)argv
包含python文件名,因此变量需要从1开始这不会处理多个参数(像grep那样)或扩展通配符(像Unix shell那样)。如果您需要此功能,可以使用以下方法获得:
改编自grep in python。
通过
[2:]
接受文件名列表,不进行异常处理:sys.argv[1]
respsys.argv[2:]
有效,如果您将其作为独立的可执行文件运行,则意味着chmod +x
第一
相关问题 更多 >
编程相关推荐