Awk 如何在日志中选择多行

Awk 如何在日志中选择多行,awk,extract,Awk,Extract,我试着整理文件。它在特定的日志文件中包含所有错误消息 这是日志内容 [ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver - org.springframework.jdbc.BadSqlGrammarException: ..... ..e(SQLErrorCodeSQLExceptionTranslator.java:231) ..ractFallbackSQLExceptionTranslator.java:73) ..Possible(

我试着整理文件。它在特定的日志文件中包含所有错误消息

这是日志内容

[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -
org.springframework.jdbc.BadSqlGrammarException:
.....
..e(SQLErrorCodeSQLExceptionTranslator.java:231)
..ractFallbackSQLExceptionTranslator.java:73)
..Possible(MyBatisExceptionTranslator.java:73)
..Interceptor.invoke(SqlSessionTemplate.java:371)
..electOne(Unknown Source)
..emplate.selectOne(SqlSessionTemplate.java:163)
[INFO] 2015-08-05 14:20:39 LoggingInterceptor -  /products/430
我试过了

awk '$1 ~/^\[ERROR\]$/{print$0}' original.log > extract.log
但结果只有一行

[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -
我的期望是

[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -
org.springframework.jdbc.BadSqlGrammarException:
.....
..e(SQLErrorCodeSQLExceptionTranslator.java:231)
..ractFallbackSQLExceptionTranslator.java:73)
..Possible(MyBatisExceptionTranslator.java:73)
..Interceptor.invoke(SqlSessionTemplate.java:371)
..electOne(Unknown Source)
..emplate.selectOne(SqlSessionTemplate.java:163)

我想知道如何提取所有错误消息。

一个想法是根据您想要打印的级别关闭打印:

$ cat log.awk
/^\[[A-Z]+\]/ { flag = 0 }
/^\[ERROR\]/ { flag = 1 }
flag

$ cat log.txt
[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -enter code here
org.springframework.jdbc.BadSqlGrammarException:enter code here
.....enter code here
..e(SQLErrorCodeSQLExceptionTranslator.java:231)enter code here
..ractFallbackSQLExceptionTranslator.java:73)enter code here
..Possible(MyBatisExceptionTranslator.java:73)enter code here
..Interceptor.invoke(SqlSessionTemplate.java:371)enter code
..electOne(Unknown Source)enter code here
..emplate.selectOne(SqlSessionTemplate.java:163)enter code here
[INFO] 2015-08-05 14:20:39 LoggingInterceptor - /products/430
[ERROR] some other
multiline
error
[WARN] A warning not an error

$ awk -f log.awk log.txt
[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -enter code here
org.springframework.jdbc.BadSqlGrammarException:enter code here
.....enter code here
..e(SQLErrorCodeSQLExceptionTranslator.java:231)enter code here
..ractFallbackSQLExceptionTranslator.java:73)enter code here
..Possible(MyBatisExceptionTranslator.java:73)enter code here
..Interceptor.invoke(SqlSessionTemplate.java:371)enter code
..electOne(Unknown Source)enter code here
..emplate.selectOne(SqlSessionTemplate.java:163)enter code here
[ERROR] some other
multiline
error

好!!它工作得很好。非常感谢。我可以只发出一行命令吗?