Da sua descrição (ênfase minha):
Each definition starts with
[*Term*]
and
it's separated from the following by an empty newline
Awk, quando chamado com um nulo RS ( RS=''
), divide um arquivo em linhas vazias.
Também é capaz de selecionar com base em strings:
$ var="someothermatch"
$ awk -v RS='' -v var="$var" '$0~var{print}' infile
Deve trabalhar para obter o parágrafo inteiro correspondente.
Do manual do awk:
If RS is set to the null string, then records are separated by blank lines. When RS is set to the null string, the newline character always acts as a field separator, in addition to whatever value FS may have.