2017-12-08 15 views
0

私は、SQLテキストだけが表示されるように、私のログファイルからstacktraceを削除したいと思います。これは私がRegExr.comに希望通りに動作しますこのスタックトレースを削除する正規表現でgrepするには?

'java.lang((.|\n)*)java:745'

しかし、それはgrep -v

grep -v 'java.lang((.|\n)*)java:745'

と私は唯一のクエリテキストを表示するためにgrep -vを使用することができますどのように任意の提案に動作しないのですか?

CONFIG: 204658E4 SQL: select * 
     from table 
     where column = :1 
java.lang.Throwable: No Error 
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1624) 
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4347) 
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4426) 
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:4733) 
    at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at oracle.ucp.jdbc.proxy.PreparedStatementProxyFactory.invoke(PreparedStatementProxyFactory.java:125) 
    at com.sun.proxy.$Proxy60.executeQuery(Unknown Source) 
    at sqlj.runtime.ExecutionContext$OracleContext.oracleExecuteQuery(ExecutionContext.java:71) 
    at me.loadQuery(DataBean.java:364) 
    at me.loadQuery(DataBean.java:411) 
    at org.apache.jsp.jsp.secure.navigate_jsp.displayMenu(navigate_jsp.java:43) 
    at org.apache.jsp.jsp.secure.navigate_jsp._jspService(navigate_jsp.java:472) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 
+0

'java.lang.Throwable'または' at'(atの前に4つのスペース)で始まる行をすべて削除できますか?感謝! – bew

+0

ありがとう!これはうまくいって、答えとして投稿するのでしょうか? 'grep -v 'java.lang。* \ |。* at。*'' – ab11

答えて

1

自分の与えられた出力から、あなたはJavaの例外は非常に特定のパターンは以下のことがわかります。java.lang.Throwable

  • スタックトレースラインで始まる、エラーメッセージの行を

    • をすべて0以上のスペースで始まり、その後に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が続きます。

  • 関連する問題