Chinaunix

标题: 小弟要做日志做错误信息截取,麻烦大神们看一下啊 [打印本页]

作者: ls2015    时间: 2014-09-15 16:10
标题: 小弟要做日志做错误信息截取,麻烦大神们看一下啊
   
    有如下日志,需要截取ERROR信息,即截取[ERROR]到[INFO]之间的信息,请问大神们shell该怎么写?

    谢谢
  1. [ERROR] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = errorLog | Line = 164 ] | null: class java.lang.NullPointerException^M
  2. 类: com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 328^M
  3. 类: com.neusoft.dataprocess.processor.DataProcessor; 方法: run; 所在行: 63^M
  4. 类: java.lang.Thread; 方法: run; 所在行: 761 |
  5. [INFO] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = infoLog | Line = 106 ] | ^M
  6. 类:com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 311--第3次同步到MySql出错:java.lang.NullPointerException |
  7. [INFO] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = infoLog | Line = 106 ] | ^M
  8. 类:com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 317--将执行保存到临时表的操作! |
  9. [ERROR] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = errorLog | Line = 164 ] | null: class java.lang.NullPointerException^M
  10. 类: com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 328^M
  11. 类: com.neusoft.dataprocess.processor.DataProcessor; 方法: run; 所在行: 63^M
  12. 类: java.lang.Thread; 方法: run; 所在行: 761 |
  13. [INFO] [2014-09-15 01:40:46]  [ Class = com.util.Log4jLogger | Method = infoLog | Line = 106 ] | ^M
  14. 类:com.order.OrderOperationWS; 方法: handleMessage; 所在行: 137--开始调用修改状态handleMessage |
复制代码

作者: qq58945591    时间: 2014-09-15 21:05
sed '/\[INFO\]/{N;d}' logfile


试试看吧。
作者: ls2015    时间: 2014-09-16 09:47
回复 2# qq58945591
错误信息是能截取出来了,但是还截取了一些其他的信息,还有一部分既不是[INFO],也不是[ERROR]的信息被截取出来了,谢谢 你  麻烦再给看一下呗


   
作者: qq58945591    时间: 2014-09-16 10:41
回复 3# ls2015


   
我是根据你INFO信息仅2行这个规则来过滤掉INFO行跟下一行,剩下的就全部是ERROR部分了,这不是你想要的结果么?

如果你希望得到什么结果,请贴出结果范例。论坛大神很多,总会有热心人帮忙的,我技术菜,但是觉得能凭自己所学的东西能帮人解决问题,这就是快乐。
作者: ls2015    时间: 2014-09-16 10:53
回复 4# qq58945591
谢谢 帮助非常大


   
作者: super皮波    时间: 2014-09-16 15:53
[ERROR] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = errorLog | Line = 164 ] | null: class java.lang.NullPointerException^M //这行截取吗?
类: com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 328^M
类: com.neusoft.dataprocess.processor.DataProcessor; 方法: run; 所在行: 63^M
类: java.lang.Thread; 方法: run; 所在行: 761 |
[INFO] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = infoLog | Line = 106 ] | ^M  //这行截取吗?
类:com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 311--第3次同步到MySql出错:java.lang.NullPointerException |
[INFO] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = infoLog | Line = 106 ] | ^M  
类:com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 317--将执行保存到临时表的操作! |

INFO部分是只要第一个Info还是都要?
作者: chengchow    时间: 2014-09-16 16:24
  1. gentoo ~ # sed -r '/\[ERROR\]/,/\[INFO\]/{1h;1!H};$!d;${g;s/\[INFO\][^\e]*\e//g}' file
  2. [ERROR] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = errorLog | Line = 164 ] | null: class java.lang.NullPointerException^M
  3. 类: com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 328^M
  4. 类: com.neusoft.dataprocess.processor.DataProcessor; 方法: run; 所在行: 63^M
  5. 类: java.lang.Thread; 方法: run; 所在行: 761 |
  6. r | Method = infoLog | Line = 106 ] | ^M
  7. [ERROR] [2014-09-14 01:41:46]  [ Class = com.util.Log4jLogger | Method = errorLog | Line = 164 ] | null: class java.lang.NullPointerException^M
  8. 类: com.neusoft.dataprocess.processor.DataProcessor; 方法: process; 所在行: 328^M
  9. 类: com.neusoft.dataprocess.processor.DataProcessor; 方法: run; 所在行: 63^M
  10. 类: java.lang.Thread; 方法: run; 所在行: 761 |
  11. r | Method = infoLog | Line = 106 ] | ^M
复制代码
不是很满意,凑合能出结果
作者: ls2015    时间: 2014-09-16 16:38
回复 6# super皮波
只要[ERROR]部分,因为还有一些既不是[ERROR]也不是[INFO]的东西,所以删除[INFO]会多留下一些东西


   
作者: ls2015    时间: 2014-09-16 16:39
回复 7# chengchow
写的很好  大神啊  谢谢


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2