Это то, что вы пытаетесь сделать?
$ 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>
Если ни один из них не является тем, что вам нужно, обновите свой вопрос, чтобы уточнить ваши требования и предоставить более по-настоящему репрезентативный пример ввода / вывода.