有的时候,我们需要在应用日志中搜索关键词前后的的报错信息,但是由于应用的日志很多,我们只想查询关键词第一次或者最后一次出现的地方的前后几行日志,这时,就可以使用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. Git 命令使用体验的神器 -- tig

    tig, 就是把 Git 这个单词倒过来念, 它是一个命令行工具, 日常使用中我用它来取代 Git 最高频的几个操作, 如 git log, git diff 以及 git blame等, 使用常见安 ...

  2. Joker 前端框架组件的生命周期:深度解析与实践应用

    在 Joker 前端框架的开发体系中,组件的生命周期犹如一颗精准的导航星,指引着开发者构建高效.稳定且富有交互性的应用程序.它完整地涵盖了从组件实例诞生的那一刻起,直至其完成使命被销毁的全过程,每一个 ...

  3. oracle 数据库服务名怎么查

    WINDOWS上,直接看 服务里的 服务名就好:Oracle SID Service ,中间的SID就是数据库服务的名称.LINUX系统下,输入env |grep SID 可以查看到,一般没换都是这个 ...

  4. 『Plotly实战指南』--柱状图绘制高级篇

    在数据可视化的世界里,柱状图是一种直观且强大的工具,用于展示数据的分布.比较和趋势. 从基础的柱状图出发,我们可以进一步探索更复杂的图表类型,如分组柱状图和堆积柱状图,它们在处理多维数据和复杂关系时具 ...

  5. FastAPI Pydantic动态调整Schema

    title: FastAPI Pydantic动态调整Schema date: 2025/3/29 updated: 2025/3/29 author: cmdragon excerpt: Pydan ...

  6. 【JDBC第9章】Apache-DBUtils实现CRUD操作

    第9章:Apache-DBUtils实现CRUD操作 9.1 Apache-DBUtils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的 ...

  7. 【Git】GitHub

    GitHub 本地库与远程库开发模式 开发模式一:团队内部协作 项目经理岳不群,程序员令狐冲 岳不群把他的本地库推送到远程库 令狐冲克隆远程库到自己的本地库 令狐冲在自己本地库的基础上修改代码,提交到 ...

  8. GitLab 服务器宕机时的项目代码恢复方法

    重要前提:GitLab 数据挂载盘必须能够正常读取,且 /var/opt/gitlab/git-data/repositories 目录下的数据可以完整拷贝. 当 GitLab 服务器意外宕机且没有备 ...

  9. Sql Server执行情况

    --- 1.查找目前SQL Server所执行的SQL语法,并展示资源情况: SELECT s2.dbid , DB_NAME(s2.dbid) AS [数据库名] , --s1.sql_handle ...

  10. 0x03 搜索与图论

    搜索与图论 广度优先搜索\(BFS\) 概念 广度优先搜索(Breadth-First Search)是一种图遍历算法,用于在图或树中按层次逐层访问节点.它从源节点(起始节点)开始,首先访问源节点的所 ...