MENU

linux 截取某段时间内的日志

2016 年 12 月 08 日 • 杂乱文章

为什么要这样干

由于项目日志过大,一天足有300M+,而有时候需要看一天内某一段时间内的日志,如果直接下载很麻烦,并且很大,读取速度也慢,开发的受不了了,每次都这样搞浪费时间,效率低,于是命令我,无论用什么办法,把项目日志要看的那段时间给截出来,然后搞了一阵,最后拿出来分享一下。

首先搞清楚日志格式
首先说明一下我们项目日志的时间格式,具体如下图,年月时分秒毫秒

举个栗子

先上一条命令,例子是从2016年12月8日17:00 到2016年12月8日18:00截取方式,如果只是检索首行,需要加^

sed -n '/2016-12-08 17:00:/,/2016-12-08 18:00:/p' 日志路径及名称 > 重定向路径及文件名 ##>> 追加
sed -n '/2016-12-08 17:[0-9][0-9]:[0-9]/,/2016-12-08 18:[0-9][0-9]:[0-9][0-9]/p'   #正则表达式

如果日志格式是08/12/2016:17:00:00 则需要'/2016:17:00/,/2016:18:00:/p'

一个简单的脚本

由于这些东西都是我在弄,重定向到一个文件后叫他们去下载,然后自己写了一个脚本,让他们自己去搞吧,使用方法也很简单,于是一个垃圾脚本诞生了,将就看一下吧,具体什么意思我就不解释了。

#!/bin/bash
stty erase ^h
echo "日志检索工具"
read -p "开始时间:" start
read -p "结束时间:" stop
read -p "日志路径:" log
read -p "重定向位置:" path
read -p "确定继续? [Y/N]?" answer
case $answer in
Y|y)
sed -n "/${start}:/,/${stop}:/p" "$log" > "$path";;
N|n)
echo "退出程序";;
*)
esac
exit 0
脚本使用

测试一下脚本,就截取今天19点到20点的吧,会输入一些变量。具体操作如下

最后编辑于: 2018 年 12 月 10 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码