我正在尝试从nginx日志文件中解析以下格式:
10.0.0.1 [02/Oct/2012:10:21:46 +0000] GET /api/123/test.json?stop=2012-09-29 502 0
我的python脚本:
#!/usr/bin/env python
f = file('slow-queries.txt', 'r')
# iterate over the lines in the file
for line in f:
# split the line into a list of column values
columns = line.split(' ')
# clean any whitespace off the items
# columns = [col.strip() for col in columns]
# ensure the column has at least one value before printing
if columns:
print "first =>", columns[0] # print the first column
print "second =>", columns[1]
基本上我想从日志文件中得到的是发送的查询,所以在上面的例子中,我想要提取/api/123/test.json?stop=2012-09-29
我的脚本似乎没有这样做,我做错了什么?
答案 0 :(得分:3)
这些是制表符,而不是空格:
ip, date, method, path, status, _ = line.split('\t')
答案 1 :(得分:1)
你做错了是使用通用编程语言,其中有专门的日志文件解析器语言:awk;)
awk '{ print $5 }' /path/to/slow-queries.txt
当然可以使用python / php / perl / YOUR AD HERE /但是awk总是会执行它们^^
编辑: 甚至可能将结果传递给一个新文件,然后由你的python脚本使用:
awk '{ print $5 }' /path/to/slow-queries.txt > /tmp/queries.txt