Chinaunix
标题:
nginx日志的提取
[打印本页]
作者:
changsiheng
时间:
2015-08-27 19:22
标题:
nginx日志的提取
本帖最后由 changsiheng 于 2015-08-27 19:24 编辑
100.0.0.16 - - [27/Aug/2015:10:44:58 +0000] GET www HTTP/1.1 "200" 15 "-" "-" "-" "3.254" "192.168.1.1:80"
100.0.1.13 - - [27/Aug/2015:10:45:22 +0000] GET www HTTP/1.1 "200" 90 "-" "-" "-" "0.498" "192.168.1.1:80"
100.0.1.13 - - [27/Aug/2015:10:46:26 +0000] GET www HTTP/1.1 "200" 90 "-" "-" "-" "1.704" "192.168.1.1:80"
100.0.1.16 - - [27/Aug/2015:10:46:35 +0000] GET www HTTP/1.1 "200" 94 "-" "-" "-" "1.189" "192.168.1.1:80"
统计非200的数量
各位好,我想提取2015:10:44:00到2015:10:49:00,五分钟內的访问状态,这个语句应当如何操作
awk '$4 ~ '/*$start_time*/','/*$end_time*/' {print $0}' $logfile
本想说提取出时间先,但是发现时间我都提取不出来,真心求解,先谢谢各位了
作者:
MMMIX
时间:
2015-08-27 19:53
回复
1#
changsiheng
恰当的分割加判断即可:
awk -vstart='2015:10:40:00' -vend='2015:10:50:00' -F'/|\\s+|\\s*"\\s*' ' start <= $6 && $6 <= end && $12 != 200 '
作者:
tuyajie
时间:
2015-08-28 09:52
[jay.liu@aliCloud chinaUnix]$ awk -F'[/: \"]' '{print $6,$7,$8,$9,$16}' test.dat
2015 10 44 58 200
2015 10 45 22 200
2015 10 46 26 200
2015 10 46 35 200
[jay.liu@aliCloud chinaUnix]$ cat test.dat
100.0.0.16 - - [27/Aug/2015:10:44:58 +0000] GET www HTTP/1.1 "200" 15 "-" "-" "-" "3.254" "192.168.1.1:80"
100.0.1.13 - - [27/Aug/2015:10:45:22 +0000] GET www HTTP/1.1 "200" 90 "-" "-" "-" "0.498" "192.168.1.1:80"
100.0.1.13 - - [27/Aug/2015:10:46:26 +0000] GET www HTTP/1.1 "200" 90 "-" "-" "-" "1.704" "192.168.1.1:80"
100.0.1.16 - - [27/Aug/2015:10:46:35 +0000] GET www HTTP/1.1 "200" 94 "-" "-" "-" "1.189" "192.168.1.1:80"
复制代码
再根据需求加工加工吧
作者:
leijskg
时间:
2015-08-28 09:54
提示:
作者被禁止或删除 内容自动屏蔽
作者:
bikong0411
时间:
2015-08-28 10:11
awk -F'[/ "]' '$6>="2015:10:44:00" && $6<="2015:10:49:00" && $13 != 200'
复制代码
作者:
jason680
时间:
2015-08-28 10:29
回复
1#
changsiheng
$ start_time="10:
44
:00"; end_time="10:
46
:00";awk -vst="$start_time" -vet="$end_time" '{t=$4;gsub(/^[^:]+:/,"",t);if(st<=t&&t<=et)print}' FILE
100.0.0.16 - - [27/Aug/2015:10:44:58 +0000] GET www HTTP/1.1 "200" 15 "-" "-" "-" "3.254" "192.168.1.1:80"
100.0.1.13 - - [27/Aug/2015:10:45:22 +0000] GET www HTTP/1.1 "200" 90 "-" "-" "-" "0.498" "192.168.1.1:80"
$ start_time="10:
44
:00"; end_time="10:
49
:00";awk -vst="$start_time" -vet="$end_time" '{t=$4;gsub(/
^[^:]+:
/,"",
t
);if(st<=
t
&&
t
<=et)print}' FILE
100.0.0.16 - -
[27/Aug/2015:
10:44:58
+0000] GET www HTTP/1.1 "200" 15 "-" "-" "-" "3.254" "192.168.1.1:80"
100.0.1.13 - - [27/Aug/2015:10:45:22 +0000] GET www HTTP/1.1 "200" 90 "-" "-" "-" "0.498" "192.168.1.1:80"
100.0.1.13 - - [27/Aug/2015:10:46:26 +0000] GET www HTTP/1.1 "200" 90 "-" "-" "-" "1.704" "192.168.1.1:80"
100.0.1.16 - - [27/Aug/2015:10:46:35 +0000] GET www HTTP/1.1 "200" 94 "-" "-" "-" "1.189" "192.168.1.1:80"
作者:
changsiheng
时间:
2015-08-28 15:33
确实如您所说,之前可能是太着急,并且对日志结构也不是很明白,这上午又重新写了一下,算是稍微有了头绪,非常感谢
回复
2#
MMMIX
作者:
changsiheng
时间:
2015-08-28 15:36
感谢,根据需求已经得到了想要的结果
回复
3#
tuyajie
作者:
changsiheng
时间:
2015-08-28 15:37
感谢
回复
4#
leijskg
作者:
changsiheng
时间:
2015-08-28 15:38
清晰明了
回复
5#
bikong0411
作者:
baby_神
时间:
2015-08-28 17:16
来学习下
作者:
internethehe
时间:
2015-08-29 09:55
非常有用,学习了
作者:
聆雨淋夜
时间:
2015-08-29 22:45
grep "2015:10:4[4-9]" file|grep -vw "200"
作者:
MMMIX
时间:
2015-08-29 23:20
回复
13#
聆雨淋夜
HTTP/1.1 后面那个 200 才算数.
作者:
聆雨淋夜
时间:
2015-08-29 23:22
回复
14#
MMMIX
grep "2015:10:4[4-9]" file|grep -vw "\"200\""
作者:
MMMIX
时间:
2015-08-29 23:29
回复
15#
聆雨淋夜
倒数第二个域, 或者是其他的地方也可能出现 "200"
作者:
聆雨淋夜
时间:
2015-08-29 23:35
回复
16#
MMMIX
不好意思我对nginx的日志格式不太懂
grep "2015:10:4[4-9]" file|grep -v "HTTP/1.1 \"200\""
作者:
MMMIX
时间:
2015-08-29 23:42
回复
17#
聆雨淋夜
这个其实还是有问题的,因为协议并不见得就一定是 HTTP/1.1。按域判断在这里是最靠谱的,此处用 grep 并不合适。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2