2013-07-19 1 views
1

В grep есть ли возможность показывать вывод до тех пор, пока строка не встретит некоторое регулярное выражение? В примереGrep - печатать строки до тех пор, пока линия не будет пустой

foo.log:

request1: POST /foo 
params 
some payload 

request1: tag 
some payload 

request2: POST /foo 
params 
some payload 

Я хотел бы grepfoo.log, чтобы получить всю информацию о request1, как это:

request1: POST /foo 
params 
some payload 

request1: tag 
some payload 

Возможно ли это (что-то вроде опции -A) или мне просто нужно использовать регулярные выражения?

+1

В AIX я иногда видел 'Grep -p', который печатает весь абзац согласующей линии. – fedorqui

ответ

3

попробовать эту строку:

awk -v RS="" -v ORS="\n\n" '/request1/' foo.log 
+0

WOW, спасибо большое! У меня просто была проблема с 'cat foo.log | xargs awk -v RS = "" -v ORS = "\ n \ n" '/ request1 /' 'вы знаете, почему? –

+1

Не нужно 'cat file | xargs awk', просто 'awk file'. То есть, команда Kent размещена достаточно, сделает все, что требуется. – fedorqui

+1

@fedorqui - это правильно. Slawosz, просто cp моя строка и замените имя файла вашим файлом. – Kent

Смежные вопросы