[~]% cat filename.txt
[TRACE] not needed
needed
needed2
not needed again [TRACE]
[~]% sed '/[TRACE]/d' filename.txt | tee filename.txt
[~]% cat filename.txt
needed
needed2
open('trimmed.log', 'w+').writelines([l for l in open('original.log').readlines() if '[TRACE]' not in l])
您必须手动更改输入文件的名称原始.log,最终输出文件('修剪.log)以及。你知道吗
更进一步的一步是这样一个函数(这样您就可以在一个循环中为所有文件调用它):
def filter_logs(log_path, target_string='[TRACE]'):
with open(log_path) as infile:
with open(log_path + '.notrace.log', 'w+') as ofile:
for log_line in infile.readlines():
if target_string not in log_line:
ofile.write(log_line)
在我看来,使用Python来完成这样的任务是一种过分的做法
解决方案(Linux)
结果
你可以按计划运行,而且运行速度非常快
一个非常简单的解决方案(假设您可以将一个完整的日志文件加载到内存中)是一个可以在python解释器中直接执行的线性程序:
您必须手动更改输入文件的名称原始.log,最终输出文件('修剪.log)以及。你知道吗
更进一步的一步是这样一个函数(这样您就可以在一个循环中为所有文件调用它):
文件处理程序被显式地处理(因此使用了两个“with”语句),正如我前面所说的,它允许您传递一个到日志文件的路径,甚至在您想要删除包含其他字符串的行时更改要比较的字符串。它将在原始日志旁边写入一个文件,但后缀为'。notrace.log日志'(确保您在那里有写入权限)。你知道吗
修剪得开心!你知道吗
相关问题 更多 >
编程相关推荐