ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux grep查询关键词首次或者最后一次出现的地方

2022-01-30 14:01:48  阅读:421  来源: 互联网

标签:grep 关键词 etc MANPATH Linux config man


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

查询关键词所在位置

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

参数:

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

-c :计算找到 ‘搜寻字符串’ 的次数

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

-n :顺便输出行号

-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!

-A lineNum:输出匹配字符串后多少行,-A 3后三行

-B lineNum:输出匹配字符串前多少行,-B 2前两行

-C lineNum:输出匹配字符串前后多少行,-C 2前后两行

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我在服务器执行此命令的时候,如果加上 --color=auto,被找到的关键字并未加上颜色。您如果指导怎么处理,请在留言区为楼兰胡杨留言。

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

grep -A10 "MANPATH" /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 "MANPATH" /etc/man.config >> newFile.log

标签:grep,关键词,etc,MANPATH,Linux,config,man
来源: https://www.cnblogs.com/east7/p/15856725.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有