• linux日志log查询常用命令


    一般的log文件都是需要过滤

    1.grep 过滤查找

    查询ip 221.2.100.138的log

    grep '221.2.100.138'  web.access.log  

    grep 221.2.100.138  web.access.log

    less web.access.log |grep "221.2.100.138"

     统计error行数

    grep error web.access.log |wc -l

    将error重定向(linux是>python是>>)到文件中

    grep error  web.access.log >mylog1.txt

    其他常用参数,位置放在前面后面都可以

    -i   不区分大小写 grep -i 'HTTP'  web.access.log或者grep  'HTTP' -i web.access.log

    -n      输出行号

    -c    统计行数

    支持正则

    2.sed  行筛选

    显示第1行

    [root@localhost ~]# sed -n '1p' log.log
    12.3.4.3 122:33:33:#3 /post/dfdjfk/dff  400

    显示第1-3行

    [root@localhost ~]# sed -n '1,3p' log.log
    12.3.4.3 122:33:33:#3 /post/dfdjfk/dff  400
    12.3.4.5.5 343:44:$:444 /get/fd/ddf  error
    127.0.0.1 2018:09:01:56 /post/ffdf  200

    常用选项:
            -n∶不使用的时候,会把所有数据都显示出来,但如果加上 -n 参数后,只显示经过处理的那几行
            -e∶直接在指令列模式上进行 sed 的动作编辑;
            -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
            -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
            -i∶直接修改读取的档案内容,而不是由萤幕输出。 

    常用命令:
            a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
            c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
            d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
             i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
             ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
             s

    命令是直接使用,参数是-一起使用

    格式:

    sed '/模式/' d filename或者sed '/模式d/' filename都可以。删除查询条件为模式的行

    eg:删除以#开头的行,并将修改写入文件

    sed '/^#/' d -i filename

    如果不加-i是显示在屏幕上,这时候可以把结果重定向到文件中

    sed '/^#/' d filename>filename_new 覆盖写入w

    sed '/^#/' d -i filename>>filename_new追加写入aw

    sed -n '/2015:08:39:59/,/2015:08:40:02/' p web.access.log 打印出这个时间段的log,p是打印的意思

    sed -n '/2015:08:39:59/,/2015:08:40:02/' web.access.log |awk '{print $4,$5}'

    awk分列

    语法awk '{print $1}'打印第一列

          awk -F : '{print $1}' 以:为分隔符打印出第一列 比如每行的数据格式是aa:bb,执行以后会取到aa,要想这个时候取值aa和bb,执行awk -F :'{print $1,$2}'

          awk '{if(表达式){语句}}'

    (1)      awk '{print}' 打印所有列

    (2)打印第一行的所有数据 awk 'NR==1{print}'

    (3)打印第二行第一列       awk 'NR==2{print $1}'

    grep '106.39.249.119' web.access.log | awk '{print $1,$2}' 打印出含有106这个ip地址的第一列和第二列

    awk  '{if($1=="106.39.241.119"){print $1,$2}}' web.access.log 打印出ip地址是106的第一列和第二列

    awk '$1=="106.39.249.119" {print $1,$2}' web.access.log同上

     其他组合用法

    1.统计wc

    统计行数(line)  |wc -l          more filename|wc -l或者wc -l filename

    统计单词数(word) |wc -w  

    统计字符数  |wc -c (bytes)

    2.排序sort 经常与|管道符使用

      |sort -n 按照数字进行排序,不加,会出现1后面是10这种排序

      |sort -nr 反序reverse排序

    3.去重uniq

     经常与管道符结合使用|

    |uniq -c 将该重复的数据的行数统计出  一般在uniq -c|sort -n使用,因为uniq会把数字统计出来,然后sort -n按照数字进行排序

    |uniq -d 只显示重复的行

    |uniq -u 只显示不重复的行

     例子:

    统计出访问日志中有多少个不同的ip

    awk '{print $1}' web.access.log |sort|uniq -c|wc -l

    统计访问最高的ip

    cat access.log|awk '{print $2}'|uniq -c|sort -nr|head -n 1

    或者

    cat acess.log|awk '{print $2}'|uniq -c|sort -nr|sed '1p'

    字符转换tr,以下转换不会对源文件进行操作

    tr '#' '!' 把#全部转换成!

    cat a.log |tr 'a-z'  'A-Z'

  • 相关阅读:
    vue使用talkIngData统计
    vue项目中使用百度统计
    vue的指令修饰符
    提问:
    整理心情再投入下一个阶段
    CSS写三角形
    单行文本和多行文本超出隐藏
    清除浮动的方法
    用JS表示斐波拉契数列
    vue中使用动态挂载和懒加载,实现点击导航栏菜单弹出不同弹框
  • 原文地址:https://www.cnblogs.com/xueli/p/4892352.html
Copyright © 2020-2023  润新知