как напечатать полные функциональные выдержки из программы, содержащие какой-то определенный образец внутри - PullRequest
0 голосов
/ 29 марта 2019

У меня есть файл с тысячами функций, начиная с <\ registername> и заканчивая <\ regend>.Fie имеет несколько функций с определенным шаблоном, и большинство функций не имеют этого шаблона внутри.Я хочу только вывод кода с этим конкретным шаблоном внутри них.У меня есть входная программа, как показано ниже: -

func3 и func5 код не требуется в выходном файле.

<registername> func1<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func2<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func3<\registername>
<var>...
<no_pattern> are you good <pattern>
<\regend>

<registername> func4<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func5<\registername>
<var>...
<no_pattern> are you good <pattern>
<\regend>


<registername> func1<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func2<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func4<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

1 Ответ

0 голосов
/ 31 марта 2019

Это то, что вы пытаетесь сделать?

$ awk -v RS= -v ORS='\n\n' '/\n<pattern>/' file
<registername> func1<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func2<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func4<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

или

$ awk -v RS= -v ORS='\n\n' '!/<no_pattern>/' file
<registername> func1<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func2<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

<registername> func4<\registername>
<var>...
<pattern> are you good <pattern>
<\regend>

Если ни один из них не является тем, что вам нужно, обновите свой вопрос, чтобы уточнить ваши требования и предоставить более по-настоящему репрезентативный пример ввода / вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...