【发布时间】:2016-07-11 00:33:48
【问题描述】:
这是我当前的日志文件
event_1.log
a 0 3.2 1024 1 0 0
a 0 6.4 2048 2 0 0
le 0 9.6 2048 2 0 0
a 0 12.8 2048 2 0 0
le 0 12.8 2048 2 0 0
ll 0 19.6 2048 2 0 0
a 1 19.6 1024 1 0 0
a 1 22.4 3072 3 0 0
d 0 19.2 2048 2 0 0
le 1 22.4 2048 2 0 0
ll 1 22.8 2048 2 0 0
d 1 22.8 1024 1 0 0
a 0 26 2048 2 0 0
基于第二列,我需要创建文件名 {second_column}.log。我只需要提取具有 first_column 等于 a 或 d。其他的(le 和 ll)应该被跳过。
以下是我的预期输出
0.log
a 0 3.2 1024 1 0 0
a 0 6.4 2048 2 0 0
a 0 12.8 2048 2 0 0
d 0 19.2 2048 2 0 0
a 0 26 2048 2 0 0
1.log
a 1 19.6 1024 1 0 0
a 1 22.4 3072 3 0 0
d 1 22.8 1024 1 0 0
这是我尝试过的,但我显然是正则表达式的新手。我对其他解决方案(shell、sed、awk 等)持开放态度。
import re
input_file = open("event_1.log", "r")
output_file = open("column2.log", "w") # want this to be the name of the 2nd column
for line in input_file:
match_defines = re.match(r'\s*([a-z]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)', line)
if match_defines.group(1) == 'a':
newline1= "\ndef %s():\n return %s" % (match_defines.group(1),match_defines.group(2))
output_file.write(newline1)
else:
output_file.write(line)
非常感谢任何帮助。谢谢
【问题讨论】:
标签: python regex shell awk sed