资讯

展开

Linux日志查看命令

作者:快盘下载 人气:

无意看到这样一个命令:
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


加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!