前言: 在这家公司比较少接触到linux
, 内网测试都是部署在windows
上. 近期部署了外网linux
上, 测试在线上遇到的一些bug
需要解决, 一时间忘记了一些命令, 于是打算补一补, 用到了就记一记
这篇记录的是grep
命令
通常用到比较多的地方就是用来过滤输出, 如
代码语言:javascript复制//查看进程时进行过滤
ps -ef | grep xxx
好像就这样...
现在用它来匹配文件内容
实例操作
首先 待查找的文件如下
代码语言:javascript复制[cailinfan@game1 common]$ ls
common.log common.log.2020.11.03.22 common.log.2020.11.04.10 common.log.2020.11.04.16 common.log.2020.11.04.22 common.log.2020.11.05.11 common.log.2020.11.05.17 common.log.2020.11.06.00 common.log.2020.11.06.13
common.log.2020.11.03.17 common.log.2020.11.03.23 common.log.2020.11.04.11 common.log.2020.11.04.17 common.log.2020.11.04.23 common.log.2020.11.05.12 common.log.2020.11.05.18 common.log.2020.11.06.04 common.log.2020.11.06.14
common.log.2020.11.03.18 common.log.2020.11.04.01 common.log.2020.11.04.12 common.log.2020.11.04.18 common.log.2020.11.05.01 common.log.2020.11.05.13 common.log.2020.11.05.19 common.log.2020.11.06.09 common.log.2020.11.06.15
common.log.2020.11.03.19 common.log.2020.11.04.02 common.log.2020.11.04.13 common.log.2020.11.04.19 common.log.2020.11.05.04 common.log.2020.11.05.14 common.log.2020.11.05.20 common.log.2020.11.06.10 common.log.2020.11.06.16
common.log.2020.11.03.20 common.log.2020.11.04.04 common.log.2020.11.04.14 common.log.2020.11.04.20 common.log.2020.11.05.09 common.log.2020.11.05.15 common.log.2020.11.05.21 common.log.2020.11.06.11
common.log.2020.11.03.21 common.log.2020.11.04.09 common.log.2020.11.04.15 common.log.2020.11.04.21 common.log.2020.11.05.10 common.log.2020.11.05.16 common.log.2020.11.05.22 common.log.2020.11.06.12
当然是以xxx.log.yyyy.mm.dd.HH
这种格式命名的了
场景1: 在日志文件中查找出现过改字符串的文件
代码语言:javascript复制[cailinfan@game1 common]$ grep -l "1043846373394350080" common.log.2020.11.05.*
common.log.2020.11.05.13
common.log.2020.11.05.14
common.log.2020.11.05.16
common.log.2020.11.05.18
common.log.2020.11.05.19
[cailinfan@game1 common]$
场景2: 打印出在该文件内容中中出现的次数
代码语言:javascript复制[cailinfan@game1 common]$ grep -c "1043846373394350080" common.log.2020.11.05.*
common.log.2020.11.05.01:0
common.log.2020.11.05.04:0
common.log.2020.11.05.09:0
common.log.2020.11.05.10:0
common.log.2020.11.05.11:0
common.log.2020.11.05.12:0
common.log.2020.11.05.13:15
common.log.2020.11.05.14:13
common.log.2020.11.05.15:0
common.log.2020.11.05.16:14
common.log.2020.11.05.17:0
common.log.2020.11.05.18:25
common.log.2020.11.05.19:171
common.log.2020.11.05.20:0
common.log.2020.11.05.21:0
common.log.2020.11.05.22:0
[cailinfan@game1 common]$
场景3: 单独在一个文件中出现的行数
代码语言:javascript复制[cailinfan@game1 common]$ grep -n "1043846373394350080" common.log.2020.11.05.18
784:2020-11-05 18:30:08,022 [work-1-4] INFO (LoginModule.java:237) - 玩家:1043846373394350080,登录并且数据加载完毕
816:2020-11-05 18:31:07,897 [epollEventLoopGroup-9-3] INFO (GameServerHandler.java:57) - 95db87f8#1043846373394350080# closed cause by IDLE_TIME_OUT
817:2020-11-05 18:31:07,921 [work-1-4] INFO (GameUser.java:86) - 1043846373394350080开始unload....1
1088:2020-11-05 18:59:34,475 [work-1-3] INFO (CardPondModule.java:250) - 用户:1043846373394350080,高级卡池抽卡十次
...
[cailinfan@game1 common]$
场景4: 匹配即出现a又有b的字符串的文本行信息
代码语言:javascript复制[cailinfan@game1 interface]$ grep -n "1043846373394350080" interface.log.2020.11.05.14 | grep "SCHeroLvUp"
4449:2020-11-05 14:29:50,822 INFO (SCMessage.java:39) - 479a7b76#1043846373394350080#SCHeroLvUp#{"guid":1043847521794785280}
5173:2020-11-05 14:32:33,072 INFO (SCMessage.java:39) - 479a7b76#1043846373394350080#SCHeroLvUp#{"guid":1043847521794785280}
5235:2020-11-05 14:32:38,872 INFO (SCMessage.java:39) - 479a7b76#1043846373394350080#SCHeroLvUp#{"guid":1043847521794785280}
5285:2020-11-05 14:32:43,872 INFO (SCMessage.java:39) - 479a7b76#1043846373394350080#SCHeroLvUp#{"guid":1043847521794785280}
[cailinfan@game1 interface]$
ojbk
大致就这样
详情自己去使用命令man grep
或者grep --help
查看参数的使用