【发布时间】:2015-06-18 13:32:42
【问题描述】:
下午专家。
我有一个包含错误的日志文件。这是一个精简版:
*****2015-05-19 17:10:23,536 [ajp-0.0.0.0-8009-31] (TqlBuilder.java:347) ERROR - DUMMY From TqlBuilder getQueryDefinition
java.lang.Exception
xxxxxxx
xxxxxxxxx
xxxxxxx
2015-05-19 17:10:23,588 [ajp-0.0.0.0-8009-31] (TqlBuilder.java:348) ERROR - DUMMY From SqlBuilder
java.lang.Exception
xxxx
xxxx
xxxx
xxxxxxxx
2015-05-19 17:10:23,598 [ajp-0.0.0.0-8009-31] (TqlBuilder.java:351) 错误 - Bla Bla Bla java.lang.异常 xxxx xxxx xxxx xxxxxxxx**
我想提出一个基于 Bash 的解决方案(一直在尝试使用 grep,但成功有限)通过填充了(下面的示例错误列表)的黑名单文件传递此日志,以清理原始文件这些错误并生成一个新文件,其中清除了黑名单中的所有错误以及随后的行。
这是我的黑名单示例
(TqlBuilder.java:347) ERROR - DUMMY From TqlBuilder getQueryDefinition
(TqlBuilder.java:348) ERROR - DUMMY From SqlBuilder
使用普通的 grep 我只能删除这些行,但我需要一个解决方案来删除错误后面的行。我想过让 grep 删除日期“标签”之间的所有行,但我无法弄清楚如何去做。
在将原始文件应用于黑名单后,我对新的、已清理文件的预期输出将是:
**2015-05-19 17:10:23,598 [ajp-0.0.0.0-8009-31] (TqlBuilder.java:351) ERROR - Bla Bla Bla
java.lang.Exception
xxxx
xxxx
xxxx
xxxxxxxx**
【问题讨论】:
-
你有没有想过使用像 stash 这样的东西?
-
This post 可能会有所帮助。你见过吗?
-
Tichodroma,请问您有什么建议吗?