我想过滤一个日志文件,以保持所有行与某个模式匹配。我想用Python来做这个。在
这是我的第一次尝试:#!/usr/bin/env python
from sys import argv
script, filename = argv
with open(filename) as f:
for line in f:
try:
e = line.index("some_term_I_want_to_match")
except:
pass
else:
print(line)
如何将其改进为:将结果保存到名称相似的新文件中(例如,不同的扩展名)
使用regex使其更加灵活/强大。在
(我只是在学Python。这个问题是关于如何学习Python的,同时也是为了完成这个特定的结果。)
好的,这是我到目前为止所想到的…但是您如何做类似于在r前面加上一个r的操作
^{pr2}$
如果字符串是而不是字符串文本,如下一行所示?在re.compile(a_string_variable)
除此之外,我认为这一更新版本还可以:#!/usr/bin/env python
from sys import argv
import re
import os
import argparse #requires Python 2.7 or above
parser = argparse.ArgumentParser(description='filters a text file on the search phrase')
parser.add_argument('-s','--search', help='search phrase or keyword to match',required=True)
parser.add_argument('-f','--filename', help='input file name',required=True)
parser.add_argument('-v','--verbose', help='display output to the screen too', required=False, action="store_true")
args = parser.parse_args()
keyword = args.search
original_file = args.filename
verbose = args.verbose
base_file, ext = os.path.splitext(original_file)
new_file = base_file + ".filtered" + ext
regex_c = re.compile(keyword)
with open(original_file) as fi:
with open(new_file, 'w') as fo:
for line in fi:
result = regex_c.search(line)
if(result):
fo.write(line)
if(verbose):
print(line)
这能轻易改善吗?在