我有一个像list这样的文本文件:
-----> 2012-02-13 19:29:27.325 <http-0.0.0.0-9090-1> at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:236)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:187)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
.... (many lines starts with at)
5. select * from mytable
-----> 2012-02-13 19:31:27.325 <http-0.0.0.0-9090-1> at
... (many lines start with at, just like above)
如果以-----> 2012-02-13
开头的行包含关键字5. select
,我想打印以mytable
开头的行块。
如何用awk做到这一点?
答案 0 :(得分:1)
试试这个:
awk 'BEGIN {RS="----->"} /5\. select \* from mytable/ { printf("%s %s",RS,$0)}' INPUT_FILE
如果我已正确理解您的需要(打印块,如果5. select * from mytable
在那里)。如果您想要反转输出,请尝试:
awk 'BEGIN {RS="----->"} ! /5\. select \* from mytable/ { printf("%s %s",RS,$0)}' INPUT_FILE