shell分析http日志

http状态码
1字头----信息,服务器收到请求,需要请求者继续执行操作
2字头----成功,操作被成功接收并处理
3字头----重定向,需要进一步的操作以完成请求
4字头----客户端错误,请求包含语法错误或无法完成请求
5字头----服务器错误,服务器在处理请求的过程中发生了错误

应用日志分析脚本

cat /usr/local/nginx/logs/access.log | awk '{print $1}' | sort | uniq -c | sort -rn

sort
选项与参数:
-f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b  :忽略最前面的空格符部分;
-M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的数据中,仅出现一行代表;
-t  :分隔符,默认是用 [tab] 键来分隔;
-k  :以那个区间 (field) 来进行排序的意思

uniq
选项与参数:
-i   :忽略大小写字符的不同;
-c  :进行计数
-u  :只显示唯一的行

提取状态码
cat /usr/local/nginx/logs/access.log | awk '{print $9}'

提取想要的信息
cat /usr/local/nginx/logs/access.log | grep -ioE "HTTP/1.[1|0]"[[:blank:]][0-9]{3}"

grep参数详解
-i  忽略大小写
-o  只输出文件中匹配到的部分
-E  进行精确的
特殊符号    代表意义
[:alnum:]    代表英文大小写字节及数字,亦即 0-9, A-Z, a-z
[:alpha:]    代表任何英文大小写字节,亦即 A-Z, a-z
[:blank:]    代表空白键与 [Tab] 按键两者
[:cntrl:]    代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:]    代表数字而已,亦即 0-9
[:graph:]    除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键
[:lower:]    代表小写字节,亦即 a-z
[:print:]    代表任何可以被列印出来的字节
[:punct:]    代表标点符号 (punctuation symbol),亦即:" ' ? ! ; : # $...
[:upper:]    代表大写字节,亦即 A-Z
[:space:]    任何会产生空白的字节,包括空白键, [Tab], CR 等等
[:xdigit:]    代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字节

原文地址:https://www.cnblogs.com/zclzhao/p/5207746.html