Linux 实操 —— 日志筛选操作(sed与wc命令介绍)

引言

在处理数据交互业务场景的问题时,经常会出现需要统计日志中出现某些指定关键字的行数,或者行数,那么如何通过Linux 命令来快速统计一段时间之内,某个特定关键字出现的行数呢?这篇文章将会给你答案。

一、快速统计一段时间内特定log关键字出现行数

指令示例:

sed -n '/2019-12-28 11:26/,/2019-12-28 12:13/p' nohup.out | grep '接收到xx请求参数,开始处理' | wc -l

上面的命令中,'接收到xx请求参数,开始处理' 即特定关键字。两个时间代表筛选日志的起止位置,后面会详细介绍。

通常做这种操作的目的,就是为了根据 log 出现的行数,判断收到了多少次请求,从而进行分析和比较,比如和数据库中记录的条数进行比对,检查是否有丢包或异常未入库的情况。在实际排查问题的时候经常会用到。

注意,上述命令中用于筛选的日期一定是日志中真正出现的时间,否则无效,可以不精确,省略时间尾部即可。另外,我们一定要通过代码来确定某个 log 相对于每次请求是唯一的,如果一次请求中出现多次相同关键字 ,那么统计结果会比实际请求的行数要多。

二、sed 命令

Sed is a stream editor.  A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).  While in some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is  consequently  more  efficient.  But it is sed's ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

Sed 是一个流编辑器。流编辑器是使用输入流(文件或管道输入)来处理文本文件转化的工具。在某些方面有点像支持脚本编辑的编辑器(例如 ed),sed 仅基于一次输入来工作,因此也更高效。但真正与其他种类编辑器相区分的是 sed 的过滤文本的能力。

常用参数和基本语法:

sed [-hnV][-e
                    
                    

你可能感兴趣的:(Linux,sed,wc,日志筛选)