Извлечение многострочного шаблона SED или AWK

Надеюсь, что гуру sed или awk помогут мне. Мне нужно сопоставить многострочный шаблон, в котором диапазон шаблонов может охватывать от одной до трех строк. Я не могу получить результат с помощью pcregrep! Шаблон, который я хочу реализовать, выглядит примерно так =>

\s*\w+\s\w+\([A-Za-z,]*\)\s*\;\{

Дело в том, что после слов или точки с запятой следующая часть шаблона может или не может встречаться в следующей строке, И шаблон может встречаться и в одной строке, в зависимости от файла.

Заранее спасибо за ответы. Я застрял на этом этапе почти неделю! Любые предложения приветствуются :)

Например: яблочный апельсин (слива); киви {

OR

яблоко апельсиновое(сливовое);

киви

{

Выражение, соответствующее обоим выражениям.


person Gil    schedule 18.06.2012    source источник
comment
Что вы пытаетесь сопоставить?   -  person David B    schedule 18.06.2012
comment
Синтаксис :[ слово буквенно-цифровое(Что-то);буквенно-цифровое { ] Образец не обязательно появляется в одной строке, но соответствует указанной последовательности синтаксиса. Спасибо, Дэвид, за ответ.   -  person Gil    schedule 18.06.2012
comment
Было бы очень полезно, если бы вы могли опубликовать образец того, с чем вы сопоставляетесь, и что вы надеетесь извлечь из него / сопоставить с ним. Например: apple, I want to match all the p's.   -  person David B    schedule 18.06.2012
comment
Мне нужно извлечь строку:   -  person Gil    schedule 18.06.2012
comment
Дэвид, я отредактировал вопрос с примером :) Надеюсь, вы поняли мое объяснение. Я не всегда хорошо объяснял вещи :(   -  person Gil    schedule 18.06.2012


Ответы (1)


\s*(\w+)\s+(\w+?)\((\w+)\);\s*(\w+)\s*{

Твоя была совсем близко. Убедитесь, что вы установили флаг MULTILINE при использовании регулярного выражения, чтобы убедиться, что оно совпадает в нескольких строках. Это будет соответствовать всем четырем словам в вашей строке. По вашему примеру,

группа 1: apple

группа 2: orange

группа 3: plum

группа 4: kiwi

Вы можете поиграть с регулярным выражением здесь.

person David B    schedule 18.06.2012
comment
Работает прелесть! Большое спасибо. Я очень ценю это, чувак :) - person Gil; 18.06.2012