有的时候,我们需要在应用日志中搜索关键词前后的的报错信息,但是由于应用的日志很多,我们只想查询关键词第一次或者最后一次出现的地方的前后几行日志,这时,就可以使用grep和管道命令处理了。

  更多关于Linux命令的传送门——《五分钟扫盲:25个工作中常用的Linux命令》。

常用查询

先提供两个常用查询语句,再分析语法。以文件/etc/man.config为例进行举例。

首次出现位置

取出文件中关键词keyword首次出现的前2行:

grep  -A  "keyword" /etc/man.config | head -2

最近一次出现位置

在文件中查找关键词keyword最近出现的前2行记录:

grep  -B  "keyword" /etc/man.config | tail -2

查询关键词所在记录

取出文件/etc/man.config中包含关键词keyword的所有记录:

grep "keyword" /etc/man.config

查询关键词所在位置

  语法:grep [-acinv] [-A/B/C lineNum] [--color=auto] [“keyword”] [fileName]|[head/tail -lineNum]

参数:

-a :将 binary 文件以 text 文件的方式搜寻数据

-c :计算找到关键词keyword 的次数

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有keyword内容的那一行!

-A lineNum:A应该是After的意思,输出匹配字符串后多少行,-A3 显示后三行

-B lineNum:B应该是Before的意思,输出匹配字符串前多少行,-B 2 显示前两行

-C lineNum:C应该是Center的意思,输出匹配字符串前后多少行,-C2 显示前后两行

–color=auto :将找到的关键词部分高亮显示

keyword:关键词,即待匹配字符串

fileName:包括文件路径在内的文件名

|:管道命令符,它及其后面的命令可以不用

head/tail:head表示查询关键词首次出现的地方,而tail与之相反。其后的lineNum表示需要打印的行数,语法中前后出现两次lineNum,如果同时出现,依后面的为准。

  功能:文本搜索工具,类似于正则表达式搜索,用于在一个大的文件中快速搜索满足一定规则的内容,查到就将关键词以某种颜色高亮显示。

  说明:grep是Global Regular Expression Print 的缩写,分析一行的信息,若有关键词出没,就将该行打印出来。该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等。

  例1 取出文件/etc/man.config中包含关键词keyword的所有行,记录按照时间升序打印,并把找到的关键字加上颜色高亮显示:

grep --color=auto "keyword" /etc/man.config

此种打印方式用于找出包含关键词的所有行,关键词高亮显示。

例2 取出文件/etc/man.config中关键词keyword所在行及其后1行的所有行,记录按照时间升序打印:

grep -A2 "keyword" /etc/man.config

此种打印方式适用于关键词比较精确、且关键词出现次数比较少的场景。

例3 取出文件/etc/man.config中关键词keyword首次出现的前2行:

grep -B10 "keyword" /etc/man.config | head -2

例4 在文件/etc/man.config中,查找关键词keyword首次出现的后2行记录:

grep -A10 "keyword" /etc/man.config | head -2

检索关键词并把结果写入新文件

搜索关键字出现的位置,并把日志写入另一文件,如果文件存在则覆盖其内容。

语法:grep [-acinv] [-A/B/C n] [--color=auto] [“keyword”] [fileName]|[head/tail -n] > anotherFileName

>命令表示覆盖写入,如果使用>>,则表示追加写入。

例5 (搜索关键字最后一次出现位置的前后M行记录,并写入文件newFile.log,如果文件存在则追加

grep -A 10 "keyword" /etc/man.config >> newFile.log | tail -2

结束语

  《Linux 在多个文件中搜索关键字》将详细阐述如何在当前目录下的多个文件里搜索某个关键词。

  欢迎点赞阅读,一同学习交流;若有疑问,请在文章下方留下你的神评妙论!以促使博文高质量。

Linux grep查询关键词首次或者最近一次出现的地方的更多相关文章

  1. linux grep 查询多行的方法

    linux grep 查询多行的方法 经常查询 git log 中使用的方法, 如下 git log |grep "xxxx" 如果想查询多行的话, 就有些尴尬, 如果想查询多行的 ...

  2. linux grep命令详解

    linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...

  3. linux grep命令总结

    风生水起善战者,求之于势,不责于人,故能择人而任势. 博客园    首页    新随笔    联系    订阅    管理 posts - 791,  comments - 394,  trackba ...

  4. linux下查询进程占用的内存方法总结

    linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」.现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种方 ...

  5. Linux批量查询替换字符串

    Linux 批量查询替换文本文件中的字符串: 1.批量查找某个目下文件的包含的内容,例如: #   grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. #   ...

  6. Linux grep命令详解[备份]

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  7. linux grep命令(linux在文件中搜索内容)

    转自:https://www.cnblogs.com/end/archive/2012/02/21/2360965.html linux grep命令 1.作用Linux系统中grep命令是一种强大的 ...

  8. 几种在Linux下查询外网IP的办法。

    几种在Linux下查询外网IP的办法.   Curl 纯文本格式输出: curl icanhazip.com curl ifconfig.me curl curlmyip.com curl ip.ap ...

  9. Linux下查询一个包是32位还是64位

    Linux下查询一个包是32位还是64位 [root@localhost ~]# rpm -qa  --queryformat %-{name}-%{version}-%{release}-%{arc ...

  10. 如何在 Linux 系统查询机器最近重启时间

    如何在 Linux 系统查询机器最近重启时间 在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到 ...

随机推荐

  1. swoole(7)php进程间通信-消息队列

    php实现消息队列操作 ftok:可以将一个路径转换成消息队列可用的key值 msg_get_queue:第一个参数是消息队列的key 第二个参数是消息队列的读写权限 server代码: <?p ...

  2. 单页应用(SPA)是什么?

    来源:https://zhuanlan.zhihu.com/p/648113861 概述 单页应用(SPA,Single Page Application)是一种网页应用或网站的设计模式,它在浏览器中 ...

  3. node_modules/@umijs/runtime" does not exist in container.

    使用 umi 脚手架搭建项目,启动时报错 node_modules/@umijs/runtime" does not exist in container. 出现问题 .umi 是临时文件夹 ...

  4. 基于SLAM系统建图仿真,完成定位仿真

    博客地址:https://www.cnblogs.com/zylyehuo/ 基于SLAM系统完成建图仿真,详见之前的博客 基于Gazebo搭建移动机器人,并结合SLAM系统完成建图仿真 - zyly ...

  5. 密码加密|jsencrypt|md5|加密解密的两种方式

    一.md5 npm install md5 二.JSEncrypt 2.1 介绍 JSEncrypt属于RSA加密,RSA加密算法是一种非对称加密算法: 2.2 使用 安装: npm install ...

  6. 模型即产品?从应用角度看AI产品发展趋势

    提供AI咨询+AI项目陪跑服务,有需要回复1 在ChatGPT发布后的两年里,AI应用层的发展可以用一个词来评价不温不火,到去年年初时甚至有些疲软的情况.其原因有三点: 第一,算力不足,模型API响应 ...

  7. 区块链特辑——solidity语言基础(四)

    Solidity语法基础学习 七.事件: 事件 Event ·日志(log),是用来快速索引并查询过往资料的手段. ·而solidity是透过"事件"在区块链上写下日志,使用者或由 ...

  8. git库移植

    记一次个人项目移植到组织项目的git应用,留爪. 1. 首先保证你本地有一份完整的库 2. 在 gitee 组织里新建一份裸库 3. 本地库移除所有远程库 git remote //查看所有远程库 g ...

  9. Kubernetes基础教程-通过部署Nginx快速学习基本使用命令

    1.验证节点信息 1.1.查看控制平面组件的状态 [root@linux-servertwo software]# kubectl get cs Warning: v1 ComponentStatus ...

  10. python之“if __name__=="__main__"”的代表的意思和用法

    创建下方脚本A def print_sum(a): print(a) print_sum(20) if __name__=="__main__": print("test ...