Интересное упражнение, так что я пошел!
% awk '
{
lines = lines "\n" $0
}
/Ticket #1000/ {
found = 1
}
/^-+$/ {
if (found) {
print lines
}
lines = $0
found = 0
}
' svn.log
------------------------------------------------------------------------
r1075 | popad | 2011-12-02 14:28:20 +0200 (Fri, 02 Dec 2011) | 1 line
Changed paths:
M /trunk/apps/frontend/modules/mail/templates/candidateSearchAgentSuccess.php
M /trunk/apps/test.php
Ticket #1000: removing ads from emails
------------------------------------------------------------------------
Я думаю, это довольно очевидно, но обновит ответ, если нет.
Это работает, даже если в строке поиска содержится более одного коммита.
Создание переменной строки поиска оставлено в качестве упражнения.
Протестировано с использованием:
% awk --version
awk version 20070501
Я предпочитаю избегать однострочников. Если вам нравятся такие вещи, то вам понадобятся точки с запятой между утверждениями.