引言

在处理数据交互业务场景的问题时,经常会出现需要统计日志中出现某些指定关键字的行数,或者行数,那么如何通过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<script>][-f<script文件>][文本文件]

参数说明

  • -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
  • -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
  • -h或--help 显示帮助。
  • -n或--quiet或--silent 仅显示script处理后的结果,屏蔽默认输出(全部文本)。
  • -V或--version 显示版本信息。

sed 中的定址符与正则表达式

在命令:sed -n '/2019-12-28 11:26/,/2019-12-28 12:13/p' nohup.out 中,用到了定址符,定址符用来定义需要操作的文本的起止位置,由 '地址1,地址2' 组成,地址可以表示为文本的行号,也可以使用正则,上面的命令用到的是正则的方式,行号的方式如下:

1、sed -n '5,10p'      输出第 5 - 10 行的日志

2、sed -n '5p,10p'    输出第5、第10行日志

p 表示基本的处理动作是打印 print 。另外还有 d 删除,s 替换字符串。

常用操作:数据的搜索显示

示例来自菜鸟教程(更多内容):搜索 /etc/passwd有root关键字的行:

> nl /etc/passwd | sed '/root/p'
1  root:x:0:0:root:/root:/bin/bash
1  root:x:0:0:root:/root:/bin/bash
2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3  bin:x:2:2:bin:/bin:/bin/sh
4  sys:x:3:3:sys:/dev:/bin/sh
5  sync:x:4:65534:sync:/bin:/bin/sync

(补充:nl (Number of Lines) 将指定的文件添加行号标注后写到标准输出。如果不指定文件或指定文件为"-" ,程序将从标准输入读取数据。)

上述示例,如果找到 root ,不仅会输出匹配行,也会输出所有行。为了只输出匹配的行,必须要加上 -n 参数。因此在一般的搜索场景下,-n 基本都是必选参数

三、wc 命令

Print  newline,  word,  and byte counts for each FILE, and a total line if more than one FILE is specified.  With no FILE, or when FILE is -, read standard input.  A word is a non-zero-length sequence of characters delimited by white space.  The options below may be used to select  which  counts  are  printed, always in the following order: newline, word, character, byte, maximum line length.

打印每个文件的换行、字和字节的数量,指定多个文件则为所有行。如果没有文件,或文件是 “-” ,就从标准输入中读取。字是由空格分隔的长度非0的字符序列。下面的选项可以用于选择打印哪种计数,通常按照下面顺序打印:行数、字数、字符数、字节数、最大行数。

简单来说,wc 就是输出文本内容的统计信息。

常用参数:

  • -c 或--bytes或--chars 只显示Bytes数。
  • -l 或--lines 只显示行数。
  • -w 或--words 只显示字数。
  • --help 在线帮助。
  • --version 显示版本信息。

示例:

> nl testwc.txt 1  Linux networks are becoming more and more common, but scurity is often an overlooked  2  issue. Unfortunately, in today’s environment all networks are potential hacker targets,  3  fro0m tp-secret military research networks to small home LANs.  4  Linux Network Securty focuses on securing Linux in a networked environment, where the  5  security of the entire network needs to be considered rather than just isolated machines.  6  It uses a mix of theory and practicl techniques to teach administrators how to install and  7  use security applications, as well as how the applcations work and why they are necesary.
> wc testwc.txt7  92 608 testwc.txt

也可以统计多个文件:

> wc testwc.txt wcFile.json 7  92 608 testwc.txt3  34 244 wcFile.json10 126 852 total

参考资料

《Linux sed 命令》

《Linux wc 命令》

《sed命令详解+示例》

《Linux日志筛选命令》

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

  1. linux usleep函数 sleep,LINUX实操:date、sleep和usleep命令

    搜索热词 <LINUX实操:date.sleep和usleep命令>要点: 本文介绍了LINUX实操:date.sleep和usleep命令,希望对您有用.如果有疑问,可以联系我们. 1. ...

  2. linux实操——XShell5远程登录以及XFtp5远程文件操作教程

    Linux实操--远程登录以及远程文件操作 文章目录 Linux实操--远程登录以及远程文件操作 1.远程登录操作 1.1远程登录:XShell5 2.远程上传下载文件Xftp5 1.远程登录操作 X ...

  3. Linux 实操———— Shell 远程执行命令

    引言 目前,开发人员的部署方式是,将项目打包(Maven 打包) 然后将 生成的 jar 包等文件,通过Xshell 等终端工具手动传输到远程服务器上,然后再通过在终端执行远程服务器上的 shell ...

  4. linux远程工具_【linux实操3.1】linux远程连接工具Secure的使用

    把自己的闲置笔记本用来做centos7服务器了,同时也出一期教程,记录自己同时也帮助需要的人:安排如下 1.[linux实操1]华硕笔记本安装centos7实战 2.[linux实操2]使用yum在命 ...

  5. 【Linux】2. Linux实操命令

    Linux实操命令 2. Linux实操 2.1 远程登陆Linux系统 2.2 Vi和Vim编辑器 2.3 开机.重启和用户登陆注销 2.4 用户管理 2.5 指定运行级别指令 2.6 重置root ...

  6. Linux实操篇笔记

    Linux实操篇 远程登陆Linux 先检查一下sshd服务打开没有( " * " 表示打开): setup 选择系统设置,进入下面页面: Xshell 是一个强大的安全终端模拟软 ...

  7. 第五章-Linux实操篇

    title: 第五章 Linux实操篇 categories: Linux tags: linux typora-root-url: - abbrlink: 93414991 date: 2019-0 ...

  8. Linux实操篇,开机重启和用户注销

    Linux实操篇,开机重启和用户注销 1. shutdown shutdown -h now :立即关机 shutdown -h 1 :一分钟后关机 shutdown -r now :立即重启 hal ...

  9. linux实操篇之-----vi和vim编辑器

    vi和vim编辑器 1. vi和vim的基本介绍 所有Linux系统都会内置vi文本编辑器 vim是vi的升级版,可以主动以字体颜色分辨语法的正确性,代码补完和编译,错误跳转等功能. 2. vi和vi ...

最新文章

  1. eclipse xsd 生成java,Generate XSD from JAXB Java Classes using Eclipse
  2. java线程代码实现_Java 多线程代码实现讲解
  3. Python基础高级用法,必须要掌握的知识点
  4. linux显示界面指令规范,linux的常规操作命令
  5. 特斯拉股价暴跌,疯狂烧钱是否真的能够带来高额回报?
  6. 设计模式之Builder模式 (C++实现)
  7. EOSIO:EOSIO最新版1.4.0创建测试账户
  8. ~~堆(数据结构)(附模板题 AcWing 838. 堆排序)
  9. 工业大数据分析应用在哪方面
  10. 常用的自动化运维工具
  11. AEP(PMM) 傲腾内存特性
  12. 算法图解 -- 书评
  13. 镁光闪存颗粒对照表_内存颗粒型号识别
  14. 流体动力润滑(轴承油膜承载机理)
  15. jira图片_JIRA issue 中的标记语言(Textile)
  16. 弘辽科技:淘宝直通车推广无展现?该从何入手?
  17. aect17定义_AECT-05定义与94定义的区别?
  18. oracle索引的事
  19. Animator组件的使用(一)
  20. oracle 删除数据

热门文章

  1. 再见收费的Navicat!操作所有数据库靠它就够了!
  2. 轮询锁使用时遇到的问题与解决方案!
  3. 第 2-2 课:各种内部类和枚举类 + 面试题
  4. 面试突击第 3 期 | Redis 如何实现查询附近的人?视频实战版
  5. 面试官 | 说一下数据库如何分库分表?
  6. 漂亮又好用的Redis可视化客户端汇总
  7. art-template用户注册方法
  8. Win7搭建NodeJs开发环境以及HelloWorld展示—图解
  9. IPFS搭建HTTPS去中心化网站,真实可用
  10. 自动图片轮播php源码,js实现自动图片轮播代码