linux杂谈之grep

一  grep

说明: 本文基于'man grep、info grep'结合'实际案例'讲解

后续: 对比不同'grep版本'的差异性

强调: grep是针对'file'中的'字符串'进行匹配

补充: grep 利用'RER、PCRE'正则风格进行'功能'增强

grep官方手册   GUN的grep

①   grep的synax

关注点: 'OPTIONS'、'PATTERN'

②  Matcher Selection  匹配方式选择

讲解: grep的正则模式'流派'

可读性: 推荐使用'PCRE'、其次是'ERE','禁止'使用'默认'的'BRE'

BRE的正则系列

掌握: -P、-E、-i 这'三个'选项'即可',重点关注'-P'选项

linux杂谈之grep_第1张图片

linux杂谈之grep_第2张图片

③  Matching Control  匹配控制

核心关注:'-i'、'-w'、'-x'、'-v'这四个选项

linux杂谈之grep_第3张图片

④  General Output Control  通用输出控制

常用: 'grep -rl'、'-o'、'-m [在匹配到NUM行后停止读取文件]'

linux杂谈之grep_第4张图片

⑤  Output Line Prefix Control  输出行前缀控制

linux杂谈之grep_第5张图片

⑥  Context Line Control  上下文行控制

需求: 使用'空行'作为 grep 的上下文'组分隔符'

--group-separator=""

理解: '-A'、'-B'、'-C'的含义

linux杂谈之grep_第6张图片

⑦   File and Directory Selection  文件及目录的选择

常用: grep -r --exclude=GLOB

linux杂谈之grep_第7张图片

⑧  环境变量

关注: GREP_OPTIONS、GREP_COLOR、GREP_COLORS

--color参数可以选择never '永不高亮', always '总是高亮',auto '视场景高视'

linux杂谈之grep_第8张图片

grep染色

linux杂谈之grep_第9张图片

export GREP_COLOR='a;b' #默认是1;31,即高亮的红色; 您可以根据自己的喜好设置不同的颜色;

'a' 可以选择:【0,1,4,5,7,8】

0 关闭所有属性  1 设置'高亮度'  4 下划线

5 闪烁         7 反显         8 消隐

'b' 可以选择:【30-37或40-47】

30 black  --> "黑色"  31 red   --> "红色"  32 green  --> "绿色"

33 yellow --> "黄色"  34 blue  --> "蓝色"  35 purple --> "紫色"

36 cyan   --> "青色"  37 white  --> ""

30 - 37 设置'前(before)'景色

40 - 47 设置'背(background)'景色

linux杂谈之grep_第10张图片

⑨  案例讲解

需求1: '实时'过滤日志中的'关键字' --> "重点"

形式: tail -f access.log | grep -Eni 'wzj'

备注: 'tailf' 同 'tail -f'

需求2: '关键字'自定义颜色

export GREP_COLOR="01;34"

export GREP_COLOR="01;33;45"

需求3: 获取'实体网卡'的ip

备注: 利用PCRE'正则'的特性

linux杂谈之grep_第11张图片

需求4: 理解'整行'匹配的含义  --> '-x'

linux杂谈之grep_第12张图片

需求5: 获取'PATTERN'匹配的 only '文本'字符串

grep -Po  --> 只显示 access.log日志中的'状态码'

默认: 不指定'-o'选项,会将匹配的字符串'高亮'显示,并打印输出'该行'

-o选项可以使grep只输出'搜索结果的匹配'部分

需求6: 不区分'大小'写

  

linux杂谈之grep_第13张图片

需求7: '取反'操作

linux杂谈之grep_第14张图片

需求8: grep'递归'搜索文件内容

 1) 案例1: 在一个'目录及其子目录'下面搜索'某个字符串'

 2) 案例2: grep'递归'搜索文件内容时'忽略'指定格式文件

备注: --directories=recurse  '<==>'  -r  '递归'搜索

linux杂谈之grep_第15张图片

linux杂谈之grep_第16张图片

grep排除文件   grep案例学习

需求9: '-c' 选项可以使grep计算'指定字符串'出现的'次数'

需求10: '-l' 选项'只输出'匹配文件的'文件名','不'输出匹配'内容'

linux杂谈之grep_第17张图片

需求11: 显示匹配'模式PATTERN'的字符串的'上下文'

备注: 理解'-A、-B、-C' 与 '--group-separator='的关系

linux杂谈之grep_第18张图片

需求12: grep 如何'不显示'自身

​方法1:

   ps -ef | grep java | grep -v grep

方法2: --> "推荐"

   ps -ef | grep [j]ava

解读: ps -ef | grep java的时候

  1、grep'本身的进程'是grep java,所以grep本身'也会'显示出来

  2、而'ps -ef | grep [j]ava'的时候

  3、grep'本身的进程'是grep [j]ava,所以grep本身'不会'显示出来

原理:利用了'参数展开'的问题,[j]ava作为grep的参数展开为java,作为'shell参数'则不展开

linux杂谈之grep_第19张图片

⑩  grep家族

命令集: pgrep、fgrep、egrep、'zgrep'

zgrep是一个用于搜索'压缩文件'中的字符串或模式的命令  --> gzip------->'.gz'

特点: zgrep则是'在压缩文件中'查找字符串,'不需要解压'就可以操作

tar tf xxxxx.tgz | grep xxxx '文件名关键字'

zcat access0906.tgz | more  --> "查看压缩历史日志的内容"

linux杂谈之grep_第20张图片

zgrep的机制    grep的||和&&条件   zcat命令汇总

grep的13个案例

你可能感兴趣的:(linux,grep)