Python自动化训练营2期--三剑客实战Nginx日志分析

演练服务器

正则表达式

https://zh.wikipedia.org/wiki/正则表达式#PCRE表达式全集

课后作业

  • 统计所有访问以 /topics/ 开头的请求平均响应时间。
  • 如何精确描述这个匹配?"^[0-9]*.[0-9]*.[0-9]*.[0-9]*"

拓展学习资料

  • 高级Bash脚本编程指南
  • 鸟哥的Linux私房菜
  • 阮一峰的《bash脚本教程》
  • Google

课后调查表单

awk和grep查询结果不一样

image

统计所有访问以/topics/开头的请求平均响应时间:
image

匹配IP地址:
\b(\d{1,3}.){3}\d{1,3}\b

awk '$7~/^\/topics/{sum=sum+$(NF-2) num++}END{print sum/num}' nginx.log

awk ‘{if($7~/^/topics/)num=$(NF-2)+num}END{print num/NR}’ nginx.log

统计所有访问以 /topics/ 开头的请求平均响应时间:

总时间:80.605 平均时间:0.0403025
awk '{if($7~/^\/topics\//)num=$(NF-2)+num}END{print num/NR}' nginx.log

精确描述 "^[0-9]*.[0-9]*.[0-9]*.[0-9]*"

1.grep -E '[0-9]{1,3}(\.[0-9]{1,3}){3}' nginx.log | wc -l

2.grep -P '\d{1,3}(\.\d{1,3}){3}' nginx.log | wc -l

1 Like
awk '{if($7~/^\/topics/)num=$(NF-2)+num}END{print num/NR}' nginx.log 

image

  • 统计所有访问以 /topics/ 开头的请求平均响应时间。

image

  • 如何精确描述这个匹配? "^[0-9]*.[0-9]*.[0-9]*.[0-9]*"
grep -E '^([0-9]*\.){3}[0-9]{1,3}' nginx.log |wc -l

image

  • 统计所有访问以 /topics/ 开头的请求平均响应时间。
/topics/的正则表达式是^\/topics\/
代码:awk '{if($7~/^\/topics\//)num=$(NF-2)+num}END{print num/NR}' nginx.log

  • 如何精确描述这个匹配? "^[0-9]*.[0-9]*.[0-9]*.[0-9]*"
错误答案:(\d{1,3}.){3}\d{1,3}
正确答案: 
1.ip a|grep -P '(\d{1,3}\.){3}\d{1,3}'
2.ip a|grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'

image

image

1、


2、

  • 统计所有访问以 /topics/ 开头的请求平均响应时间。
awk '{if($7~/^\/topics\//) sum=sum+$(NF-2)}END{printf"%.8f\n", sum/NR}' nginx.log

  • 如何精确描述这个匹配? "^[0-9]*.[0-9]*.[0-9]*.[0-9]*"
grep -Eo '[0-9]{1,3}(\.[0-9]{1,3}){3}' nginx.log|sort|uniq -c|sort -nr|head -3

grep -Po '(\d{1,3}\.){3}\d{1,3}' nginx.log|sort|uniq -c|sort -nr|head -3

mmexport1595145823779

mmexport1595145821030

关闭