美文网首页
Linux日志查看命令

Linux日志查看命令

作者: 不是明天 | 来源:发表于2019-03-26 17:29 被阅读0次

    无意看到这样一个命令:
    cat cxx_Biz.log.2018-04-27-AM |grep ERROR| awk -F '[' '{print 2}'|awk -F ' ' '{print1}'| sort |uniq -c|wc -l

    该命令用来统计日志中文本出现的次数。但是其中的命令不太熟悉。

    我们一般用到的的日志查看相关指令:

    tail -f -n 100 catalina.out

    less catalina.out|grep ERROR

    如果需要统计文本出现次数,比如Error出现的次数怎么办?因此需要具备一下知识:

    1.cat命令:

    cat命令是整个文件的内容从上到下显示在屏幕上。还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况.

    at命令主要有三大功能
    1.一次显示整个文件 cat filename
    2.创建一个文件 cat > fileName
    3.将几个文件合并为一个文件 cat file1 file2 > file
    参数:

    -n 或 –number 由 1 开始对所有输出的行数编号
    -b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
    -s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -v 或 –show-nonprinting

    2.| 管道

    管道的作用是将左边命令的输出作为右边命令的输入

    3.awk 命令

    awk 是行处理器,优点是处理庞大文件时不会出现内存溢出或处理缓慢的问题,通常用来格式化文本信息。awk依次对每一行进行处理,然后输出。

    4.sort 命令

    sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

    -b:忽略每行前面开始出的空格字符;
    -c:检查文件是否已经按照顺序排序;
    -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
    -f:排序时,将小写字母视为大写字母;
    -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
    -m:将几个排序号的文件进行合并;
    -M:将前面3个字母依照月份的缩写进行排序;
    -n:依照数值的大小排序;
    -o<输出文件>:将排序后的结果存入制定的文件;
    -r:以相反的顺序来排序;
    -t<分隔字符>:指定排序时所用的栏位分隔字符;

    5.uniq 命令

    uniq 命令用于报告或忽略文件中的重复行,一般与sort命令结合使用
    -c或——count:在每列旁边显示该行重复出现的次数;
    -d或–repeated:仅显示重复出现的行列;
    -f<栏位>或–skip-fields=<栏位>:忽略比较指定的栏位;
    -s<字符位置>或–skip-chars=<字符位置>:忽略比较指定的字符;
    -u或——unique:仅显示出一次的行列;
    -w<字符位置>或–check-chars=<字符位置>:指定要比较的字符。

    6.> 命令

    命令 > 是定向输出到文件,如果文件不存在,就创建文件。如果文件存在,就将其清空
    另外 >>是将输出内容追加到目标文件中。其他同>

    演示

    创建文件

    ➜  uc cat > test_1.log
    ERROR [dewdwededeqw
    ERROR [adswwxdwexweddsacd
    Exception
    ddxwwdxw
    dwsxwxwx
    ERROR [123421342312^[[D^[[D
    ERROR [Heal-Session-Thread] (MemcachedConnector.java:166) - Reconnect to 192.168.200.123:8888 fail
     ERROR [Xmemcached-Reactor-0] (MemcachedConnector.java:528) - Exception occured in contr
    

    查看文件

    ➜  uc cat test.log
    ERROR
    EXCEPTION
    ERROR
    ERROR
    

    取出每一行需要的字符串

    ➜  uc cat test_1.log | awk -F '[' '{print $1}'
    ERROR
    ERROR
    Exception
    ddxwwdxw
    dwsxwxwx
    ERROR
    ERROR
     ERROR
    

    说明:awk命令:-F指定分隔符"[",是一个正则表达式;{print $1}指把第一个值打印出来。

    3 对行进行排序
    先排序是因为去重与统计的 ‘unip’命令只能处理相邻行

    ➜  uc cat test_1.log | awk -F '[' '{print $1}'|sort
     ERROR
    ERROR
    ERROR
    ERROR
    ERROR
    Exception
    ddxwwdxw
    dwsxwxwx
    

    4 统计数量与去重

    ➜  uc cat test_1.log | awk -F '[' '{print $1}'|sort|uniq -c
       1  ERROR
       4 ERROR
       1 Exception
       1 ddxwwdxw
       1 dwsxwxwx
    

    可以得到每个字符串所对应的出现次数

    5 按重复次数排序

    ➜  uc cat test_1.log | awk -F '[' '{print $1}'|sort|uniq -c|sort -rn
       4 ERROR
       1 dwsxwxwx
       1 ddxwwdxw
       1 Exception
       1  ERROR
    

    sort 的 -n:依照数值的大小排序;-r 按照相反顺序排列

    6 将结果输出到文件中

    ➜  uc cat test_1.log | awk -F '[' '{print $1}'|sort|uniq -c|sort -rn>test_res.log
    

    回到最开始的命令就容易明白其含义了。

    cat cxx_Biz.log.2018-04-27-AM |grep ERROR| awk -F '[' '{print $2}'|awk -F ' ' '{print $1}'| sort |uniq -c|wc -l
    

    其中的wc命令是干什么的?

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
    1.命令格式:
    wc [选项]文件...

    2.命令功能:
    统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。

    3.命令参数:
    -c 统计字节数。
    -l 统计行数。
    -m 统计字符数。这个标志不能与 -c 标志一起使用。
    -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
    -L 打印最长行的长度。
    -help 显示帮助信息
    --version 显示版本信息

    比如统计总行数:

    ➜  uc cat test_1.log | awk -F '[' '{print $1}'|sort|uniq -c
       1  ERROR
       4 ERROR
       1 Exception
       1 ddxwwdxw
       1 dwsxwxwx
    ➜  uc cat test_1.log | awk -F '[' '{print $1}'|sort|uniq -c|wc -l
           5
    

    相关文章

      网友评论

          本文标题:Linux日志查看命令

          本文链接:https://www.haomeiwen.com/subject/ddsnvqtx.html