Как напечатать блок строк, соответствующих шаблону, используя awk? - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть текстовый файл вроде списка:

-----> 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?

1 Ответ

1 голос
/ 14 февраля 2012

Попробуйте это:

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

Смотрите это в действии здесь .

...