Você pode definir o separador de registros para
# empty line
# empty line
[
só precisa escapar de [
com barras invertidas duplas.
Após essa busca por {N}
string e se você encontrar um imprime o registro inteiro adicionando de volta \n\n[
se o registro não for o primeiro.
Aqui está como eu faria isso:
awk 'BEGIN{RS="\n\n\["}/\{N\}/{if(NR!=1) printf "\n\n["; print $0}' file
Editar :
Para corresponder apenas ao jogador preto com {N}
:
awk 'BEGIN{RS="\n\n\["}/\{N\} (\([^)]*\)[[:space:]])*[[:space:]]*[[:digit:]]/{if(NR!=1) printf "\n\n["; print $0}' file