我想从我的日志文件中删除堆栈跟踪,这样只显示SQL文本。这在RegExr.com上按照我的意愿运行:
$this->whateverKeyTypeNameIsSetTo
但它不适用于'java.lang((.|\n)*)java:745'
grep -v
有关如何使用grep -v 'java.lang((.|\n)*)java:745'
仅显示查询文字的任何建议吗?
grep -v
答案 0 :(得分:1)
从给定的输出中,您可以看到Java异常遵循非常特定的模式:
java.lang.Throwable
at
使用grep
过滤行,我们可以从手册页中看到,您只需要指定行的一部分来消除它(当使用-v
标志忽略行匹配时模式)。
基于此,我们可以构建正则表达式和命令:
grep -v '^java.lang.Throwable\| *at' your_log_file.log
^<expression>
表达式必须与行的开头<expr1>\|<expr2>
如果expr1
或 expr2
匹配,则表达式匹配。java.lang.Throwable
匹配此确切字符串*at
可以在2中分解:
*
(后跟*
的空格)匹配任意数量的空格(0或更多)at
匹配此确切字符串总而言之,它会忽略以java.lang.Throwable
或任意数量的空格后跟at
开头的所有行。