Sed技巧按日期提取日志
按日期提取日志
如何拿出 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
1
参考知识
在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行