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