【Linux】linux中grep的用法(过滤运行日志)

本人菜鸡一只,对于正则其实真是菜的抠脚!所以得赶紧记下来,不然下次又忘了!!

遇到了个场景,程序的运行日志中,有部分信息我们是想要的,需要进行一些基础的分析。

日志拿到手上,里面可能有上万条日志,但是我们只需要其中一部分。

处理方式有非常多

1、通过各种语言io流读取日志,判断读入的行中是否包含某些字段是我们需要的

2、把日志加载到某些“容器”中,比如数据库啊,es啊等等的,然后通过对应的语法,filter出我们想要的行!

但是,说实话,如果能不做任何处理(一般服务是部署在linux上,所以运行日志也是在linux上的),直接通过linux命令行来处理是最方便的

3、linux命令行,来过滤我们想要的日志

所以选择使用grep命令

所以我先说grep命令几个比较常用的参数

参数 注释 用法
--color 匹配到的数据变红 grep --color '要匹配的行的特征'
-A 查看后几行数据  查看匹配的行的后十行:grep -A 10 '要匹配的行的特征'
-B 查看前几行数据 用法和-A一样
-i 无视大小写 grep -i '要匹配的行的特征'
-v 反选,不保留匹配到的数据 grep -v '要匹配的行的特征'

其实grep是可以使用正则的匹配的,但是他当中的所有特殊符号都需要转义!!!

看看一下的具体例子:

#查看日志中,包含“表名:”或者“包含SQL:”的行!
cat 2019-02-22.log | grep  "^\(表名:\|SQL:\).*$" 

#查看日志中,包含“表名:”或者“包含SQL:”的行!,但是还需要过滤掉select语句
cat 2019-02-22.log | grep  "^\(表名:\|SQL:\).*$" | grep -v -i 'select'

#查看日志中,将这部分日志追加到某个文件中
#如果是覆盖,就使用 ">"
cat 2019-02-22.log | grep  "^\(表名:\|SQL:\).*$" | grep -v -i 'select' >> 20190222.log

这里还是要提一句,不管什么需求,都要尽量用最简单的方式来做(不要搭上一大堆框架,因为东西多了,不好开发,也不好维护,出了问题,也要一个框架一个框架查,很麻烦!!!!)

好了,所以很短的文章,记录很简单的问题!(这篇文章说不定会更新,记录下linux其他的命令的问题)

我是菜鸡,下次再见,拜拜~~!

 

猜你喜欢

转载自blog.csdn.net/lsr40/article/details/88056171
今日推荐