“Sed技巧按日期提取日志”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
第19行: 第19行:
 
#打印  如果内容多  那就重定向到文件 吧  
 
#打印  如果内容多  那就重定向到文件 吧  
 
sed  -n 'n1,n2p' log  > yuowant.log
 
sed  -n 'n1,n2p' log  > yuowant.log
</pre>1
+
</pre>
  
 
=参考知识=
 
=参考知识=
第33行: 第33行:
 
打印范围:  sed -n '1,3p' temp.txt        打印第1行到第3行</pre>
 
打印范围:  sed -n '1,3p' temp.txt        打印第1行到第3行</pre>
  
[[category:ops]] [[category:shell]]
+
[[category:ops]] [[category:shell]] [[category:devops]]

2022年8月24日 (三) 06:59的版本

按日期提取日志

如何拿出 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行