记录·如何从大日志文件中截取某一天的日志内容

排查到一个异常的数据,不知道是怎么产生的,由此想到去看下nginx的access log。这个文件已经有7GB了,所以要看某一天的数据,不太容易,如果能把某1天的数据单独拿出来那就方便了。

第一步、找到8号开始的第1条日志所在的行数

1
2
[root@xxxxx 2019-08-12]#  grep -n "8/Aug/2019" access_log.log  | head -1
24016395:113.214.195.251 - - [08/Aug/2019:00:00:00 +0800] "GET /video/play-track/get?video_id=896&duration=10.0&offline=0&cur_time=4927.0&total_time=5208.0 HTTP/1.1"

也就是上面显示的第24016395行。

第二步、找到9号开始的第1条日志所在的行数

1
2
[root@xxxxx 2019-08-12]#  grep -n "9/Aug/2019" access_log.log  | head -1
24568149:117.82.105.175 - - [09/Aug/2019:00:00:00 +0800] "GET /video/play-track/get?video_id=1399&duration=10.0&offline=0&cur_time=1019.0&total_time=2517.0 HTTP/1.1"

也就是上面显示的第24568149行。

第三步、将上面两个行号之间的内容从日志文件中提取到单独的文件

1
sed -n '24016395,24568149p' access_log.log > 20190808.log

注意24568149p后面的p