我需要一种通过 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
不打印
原文由 David 发布,翻译遵循 CC BY-SA 4.0 许可协议
自然的问题是为什么不直接使用 grep?!但假设你不能…
注意事项:
search
代替match
查找字符串中的任意位置,
)print
删除回车(行将有一个)argv
包含python文件名,所以变量需要从1开始这不会处理多个参数(如 grep 那样)或扩展通配符(如 Unix shell 那样)。如果你想要这个功能,你可以使用以下方法获得它: