linux 三剑客分析nginx日志


nginx log日志分析  
 

找出log中的404 500的报错有多少条
root@ubuntu:/usr/local/nginx/logs# grep -E '\s500\s|\s404\s' nginx.log | wc -l
1

root@ubuntu:/usr/local/nginx/logs# grep -E -c ' 404 | 500 ' nginx.log 
1

root@ubuntu:/usr/local/nginx/logs# grep -E ' 404 | 500 ' nginx.log | wc -l
1

(grep -c 和wc -l使用效果是一样的,都是统计条数)
root@ubuntu:/usr/local/nginx/logs# grep -cE '\s500\s|\s404\s' nginx.log
1

root@ubuntu:/usr/local/nginx/logs# awk '$9~/404|500/' nginx.log |wc -l
1

root@ubuntu:/usr/local/nginx/logs# awk '$0~/404|500/' nginx.log |wc -l
1
注意$9~ 不加{print}默认就是print,如果 不加$9 默认为$0~,就是整行的意思,就默认整行中查找404和500,

 

找出访问量最高的前三名ip

root@ubuntu:/usr/local/nginx/logs# awk '{print $1}' nginx.log |sort 
192.168.141.1
192.168.141.1
2020/10/13

root@ubuntu:/usr/local/nginx/logs# awk '{print $1}' nginx.log |sort|uniq -c|sort -nr
      2 192.168.141.1
      1 2020/10/13
   
root@ubuntu:/usr/local/nginx/logs# awk '{print $1}' nginx.log |sort| uniq -c|sort -nr | head -3
      2 192.168.141.1
      1 2020/10/13
root@ubuntu:/usr/local/nginx/logs# awk '{print $1}' nginx.log |sort|uniq -c|sort -nr|head -3 |tail -3
      2 192.168.141.1
      1 2020/10/13

root@ubuntu:/usr/local/nginx/logs# awk '{print $1}' nginx.log |sort|uniq -c|sort -nr|head -3 | awk '{print $1}'
2
1

sort 排序,是一个经常使用的命令; 将重复的放在一起进行排序, sort默认排序是字典序,相对数字排序必须要加上-n加r -nr是反转;
uniq 去重  uniq -c 去重并统计重复次数

root@ubuntu:/usr/local/nginx/logs# grep -o '^[0-9]*.[0-9]*.[0-9]*.[0-9]*' nginx.log |sort|uniq -c|sort -nr|head -3
      2 192.168.141.1
      1 2020/10/13 19

 $grep  -E    -o '^[0-9{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'  nginx.log  | sort | uniq  -c | sort -nr  | head -3

 sed 's后的/可以用@替换,或者其他#、*都可以,为了区别于其他的/


 

 将topics后面的数字替换成number
 grep 'topics' nginx.log | sed 's@/topics/[0-9]*@/topics/numbers@g'
 grep 'topics' nginx.log | sed -E 's/topics\/[0-9]*@/topics/number/g' \/表示/ ,进行转义
 $sed  s#topics/[0-9]*#topics/number#g nginx.log | head -10

 

 将ip地址横向打印
 
root@ubuntu:/usr/local/nginx/logs# awk '{print $1}' nginx.log |sed ':f;N;s/\n/|/g;tf'
2020/10/13|192.168.141.1|192.168.141.1

sed的标记和跳转用法; 标记在前面 f(前面可以加f、1等任意字符):,;tf后面跳转也是
  
$awk '{print $1}'   nginx.log | sed ':1;N;s/\n/|/g;t1'
sed的工作模式是按行提取内容,忽略换行
N代表,把下面一行追加到此行,包含换行符
:1 和t1代表打一个标记为1,t1跳转到标记处,相当于一直进行N;s/\n/|/g 这个操作,其中1可以写成其他值

 三剑客练习:

root@ubuntu:/usr/local/appach# curl -s http://www.baidu.com/s?wd=mq3 | grep -o "结果约[0-9,]*" | grep -o "[0-9,]*"
4,020,000


root@ubuntu:/home/lulu/Desktop# cat TestReport202009291810.html | grep -o '<td style="font-weight:bold" align="center"><font color="red">[0-9]*</font></td>'|grep -o [0-9]*
1

root@ubuntu:/home/lulu/Desktop# cat TestReport202009291810.html | grep -o '<td style="font-weight:bold" align="center"><font color="red">[0-9]*</font></td><td align="center">[0-9]*' |grep -c "100" 
0


root@ubuntu:/home/lulu/Desktop/Test# while read x;do echo $x ; curl -s http://www.baidu.com/s?wd=$x ;done <txt | grep -o "结果约[0-9,]*" 
结果约100,000,000
结果约100,000,000
结果约98,700,000
结果约100,000,000


root@ubuntu:/home/lulu/Desktop/Test# curl -s http://www.baidu.com/s?wd=mq3 | grep  "结果约" |awk -F '约|个' ' {print $2}'
4,020,000


root@ubuntu:/home/lulu/Desktop/Test# a=`curl -s https://testerhome.com/topics|grep -o 'href="/topics/[0-9]*"'`;echo $a
href="/topics/25575" href="/topics/25520" href="/topics/25579" href="/topics/25571" href="/topics/25589" href="/topics/25578" href="/topics/25585" href="/topics/25580" href="/topics/25554" href="/topics/25588" href="/topics/25586" href="/topics/25584" href="/topics/25334" href="/topics/24967" href="/topics/25035" href="/topics/25166" href="/topics/25581" href="/topics/25582" href="/topics/24873" href="/topics/25561" href="/topics/25279" href="/topics/25555" href="/topics/25399" href="/topics/25574" href="/topics/25580" href="/topics/25566" href="/topics/25505" href="/topics/25491" href="/topics/25473"


root@ubuntu:/home/lulu/Desktop/Test# a=`curl -s https://testerhome.com/topics|grep -o 'href="/topics/[0-9]*"' | awk -F '/|"' '{print $4}' `;echo $a
25575 25520 25579 25571 25589 25578 25585 25580 25554 25588 25586 25584 25334 24967 25035 25166 25581 25582 24873 25561 25279 25555 25399 25574 25580 25566 25505 25491 25473


root@ubuntu:/home/lulu/Desktop/Test# 
a=`curl -s https://testerhome.com/topics|grep -o 'href="/topics/[0-9]*"' | awk -F '/|"' '{print $4}' `;for id in $a ;do url='https://testerhome.com/topics/'$id;zan=`curl -s $url | grep -o  -ml '<span>[0-9]*'|awk -F '>' '{print $2}'`;if [ -n "$zan" ];then echo $url '点赞人数' $zan ;else echo $url '点赞人数' 0;fi ;done | awk -F '/' '{print $NF}'

sed解析替换

grep -i '<stringProp name="ThreadGroup.num_threads">[0-9]*' order_auto.jmx  | sed  -i  "s/\([0-9]\+\)/2/g"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值