【发布时间】:2013-07-16 23:18:15
【问题描述】:
我目前拥有的东西
def unique_ips():
f = open('logfile','r')
ips = set()
for line in f:
ip = line.split()[0]
print ip
for date in ip:
logdate = line.split()[3]
print "\t", logdate
for entry in logdate:
info = line.split()[5:11]
print "\t\t", info
ips.add(ip)
unique_ips()
我遇到的问题是:
for entry in logdate:
info = line.split()[5:20]
print "\t\t", info
我有一个日志文件,我必须先按 ip 排序,然后按时间排序,然后按错误排序
应该看起来像:
199.21.99.83
[30/Jun/2013:07:18:30
['"GET', '/searchme/index.php?f=man_soweth', 'HTTP/1.1"', '200', '8676', '"-"']
但我得到的是:
199.21.99.83
[30/Jun/2013:07:18:30
['"GET', '/searchme/index.php?f=man_soweth', 'HTTP/1.1"', '200', '8676', '"-"']
['"GET', '/searchme/index.php?f=man_soweth', 'HTTP/1.1"', '200', '8676', '"-"']
['"GET', '/searchme/index.php?f=man_soweth', 'HTTP/1.1"', '200', '8676', '"-"']
['"GET', '/searchme/index.php?f=man_soweth', 'HTTP/1.1"', '200', '8676', '"-"']
...
我确定我遇到了某种语法问题,但希望能得到帮助!
日志文件如下:
99.21.99.83 - - [30/Jun/2013:07:15:50 -0500] "GET /lenny/index.php?f=13 HTTP/1.1" 200 11244 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
199.21.99.83 - - [30/Jun/2013:07:16:13 -0500] "GET /searchme/index.php?f=being_fruitful HTTP/1.1" 200 7526 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
199.21.99.83 - - [30/Jun/2013:07:16:45 -0500] "GET /searchme/index.php?f=comparing_themselves HTTP/1.1" 200 7369 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
66.249.73.40 - - [30/Jun/2013:07:16:56 -0500] "GET /espanol/displayAncient.cgi?ref=isa%2054:3 HTTP/1.1" 500 167 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
199.21.99.83 - - [30/Jun/2013:07:17:00 -0500] "GET /searchme/index.php?f=tribulation HTTP/1.1" 200 7060 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
199.21.99.83 - - [30/Jun/2013:07:17:15 -0500] "GET /searchme/index.php?f=proud HTTP/1.1" 200 7080 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
199.21.99.83 - - [30/Jun/2013:07:17:34 -0500] "GET /searchme/index.php?f=soul HTTP/1.1" 200 7063 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
199.21.99.83 - - [30/Jun/2013:07:17:38 -0500] "GET /searchme/index.php?f=the_flesh_lusteth HTTP/1.1" 200 6951 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.c
【问题讨论】:
-
输入文件是什么样的?另外,别忘了关闭 f!
-
logdate似乎是一个字符串,因此通过迭代它,您可以迭代每个单独的字符。您的循环只为logdate中的每个字符打印一次"\t\t", info。 -
使用日志文件片段编辑问题
-
你的循环做同样的事情,每次打印相同的值。如果您只希望它打印一次,为什么它完全处于循环中?如果你想要一个循环,那么每次都应该有什么不同?
标签: python file split log4j unique