按日期提取日志
如何拿出 9点到 10点的日志
日志格式如下
2018-08-02 10:44:26,110 WARN [catalina-exec-4] (JSONObject.java:431) - Tried to assign property shopStatus:java.lang.String to bean of class com.xtwl.code.dispatch.orderDispatch.bean.rsp.OrderDispatchListRspBean
2018-08-02 10:44:26,110 WARN [catalina-exec-4] (JSONObject.java:431) - Tried to assign property shopStatus:java.lang.String to bean of class com.xtwl.code.dispatch.orderDispatch.bean.rsp.OrderDispatchListRspBean
2018-08-02 10:44:26,111 WARN [catalina-exec-4] (JSONObject.java:431) - Tried to assign property shopStatus:java.lang.String to bean of class com.xtwl.code.dispatch.orderDispatch.bean.rsp.OrderDispatchListRspBean
当然 中间可能还有些行是不规则的呢
#找到开始行 n1
cat -n log | grep '2018-08-02 09:00:*' |head -n 2
#找到结束行 n2
cat -n log | grep '2018-08-02 11:00:*' |head -n 2 #这里记得 -1
#打印 如果内容多 那就重定向到文件 吧
sed -n 'n1,n2p' log > yuowant.log
参考知识
在access.log中截取 16/Aug/2010:14:31:30到17/Aug/2010:10:12:07间的日志信息,并输出到log.txt中,我的思路,用sed打印16/Aug/2010:14:31:30和17/Aug/2010:10:12:07间的日志并>
n1=`grep -n '16\/Aug\/2010:14:31:30' access.log|head -1|cut -d ':' -f1`
n2=`grep -n '17\/Aug\/2010:10:12:07' access.log|tail -1|cut -d ':' -f 1`
sed -n "${n1},${n2}p" access.log >log.txt
使用p(rint)显示行: sed -n '2p' temp.txt 只显示第2行,使用选项n
打印范围: sed -n '1,3p' temp.txt 打印第1行到第3行
reference
统计Nginx访问量