linux-日志查询 grep 篇

mac2025-04-17  3

egrep 正则语法

+, 于 . * 作用类似,表示 一个或多个重复字符。

?, 于 . * 作用类似,表示0个或一个字符。

|,表示或关系,比如 'gd|good|dog' 表示有gd,good或dog的串

(),将部分内容合成一个单元组。 比如 要搜索 glad 或 good 可以这样 'g(la|oo)d'

()的好处是可以对小组使用 + ? * 等。

比如要搜索A和C开头结尾,中间有至少一个(xyz) 的串,可以这样 : 'A(xyz)+C'

grep 常用选项含义表示如下:

-c:表示打印符合要求的行数。

-i:表示忽略大小写。

-n:表示输出符合要求的行及其行号。

-v:表示打印不符合要求的行,取反。

-r:遍历所有子目录

-A:后面跟一个数字(有无空格都可以),例如-A2表示打印符合要求的行以及下面的两行。

-B:后面跟一个数字,例如-B2表示打印符合要求的行以及上面两行。

-C:后面跟一个数字,例如-C2表示打印符合要求的行以及上下各两行。

^ 内容行头,$表示行的结尾 那么空行则可以用^$表示。

 

任意一个字符 “.”

与重复字符 “*” 如 0* 重复前一个字符多个的意思

.*表示 0个或多个任意字符

 

 

or 或操作

1.以 \| 链接

grep "高位下拉\|计算" Link_log_gym_request.log

2.以 多个 -e条件

grep -e "高位下拉" -e "计算" Link_log_gym_request.log

 

and 操作

| 管道添加条件

grep '高位下拉' Link_log_gym_request.log.20191031 | grep '计算'

 

相反操作

检索u_time非空为例

grep -v '"u_time":""' Link_log_gym_request.log.20191031

日志输出到文件 会自动创建

符号 >  文件(覆盖操作)

grep '2019-11-01 10:54:23' namesrv.log > ./log1.log

符号 >>  文件(追加操作)

grep '2019-11-01 10:54:23' namesrv.log >> ./log1.log

例子:

查询u_time 非空并含有高位下拉条件

grep -v '"u_time":""' Link_log_gym_request.log.20191031 | grep 'GymController.*高位下拉'

egrep语法 效果同上

egrep '"u_time":"[0-9]+".*高位下拉' Link_log_gym_request.log.20191031

最新回复(0)