写在前面:

测试过程中,经常会出现一闪而过的错误信息提示,没来得及截图, 要想复现,有些许困难。留给开发去定位问题的,只能是提供当时错误信息提示的大概时间, 如2020-07-20 13:00 -13:10 这个时间段,去后台找日志。


以下是2种查看指定时间段日志的命令,比较常用。

日志文件如下-仅供测试:

6ec402690322d79c14a23dd1d7f33ab2.png

要求:查询2020-07-21 11:58:00~ 12:05:50 这个时间段的日志

方法一 :使用grep命令

grep  -E '2020-07-21 1[1-2]:[5-0][8-5]:[0-5]0' out.log

ae773eeaff12a0541a992bc82b03ce5e.png

执行结果:Invalid range end

正则表达式匹配的数字 为:[0-9] 等价于 [[:digit:]] 因此以上命令不可用。

换种思路:11:58:00 ~ 12:05:50 这个时间段 拆分为 11:58:00~11:59:59 和12:00:00~12.05:50,命令如下:

grep  -E '2020-07-21 11:5[8-9]:[0-5][0-9]|2020-07-21 12:0[0-5]:[0-5]0' out.log
grep -E 选项可以用来扩展选项为正则表达式。如果使用了grep 命令的选项-E,则应该使用 | 来分割多个pattern,以此实现OR操作。

a704e36a477f5dd8b575c8687b081e63.png

方法二:使用sed 命令

sed -n '/2020-07-21 11:58:00/,/2020-07-21 12:05:50/p' out.log

sed -n  

  • -n选项:只显示匹配处理的行(不加会输出所有)

  • -p选项:打印

  • -n 和-p  经常一起使用

54a5521a665d2f61fe6e92a2db1c155c.png

测试带n 和 不带n

3a008570e0b625ae7b2c7e4f7305ca42.png

Logo

更多推荐