Existe uma maneira fácil de dividir um arquivo de texto em seções com chave

Estou tentando analisar alguns dados de um arquivo usando Perl & Parse :: RecDescent. Não consigo lançar o arquivo de dados completo no script perl, porque o RecDescent levará dias analisando-o. Então, dividi o enorme arquivo de dados em pedaços do tamanho de RD para reduzir o tempo de execuçã

No entanto, preciso extrair seções entre colchetes balanceados e a rotina que tenho agora não é robusta (depende muito da posição do colchete final de uma nova linha). Exemplo

cell ( identifier ) {
  keyword2 { };
  ...
  keyword3 { keyword4 {  } };
}

...more sections...

Preciso pegar tudo, desdecell ... { até o fechamento correspondente} que pode ter várias quantidades de espaçamento e subseçõe

Deve haver alguma coisa de linha de comando do linux para fazer isso facilmente? Alguma ideia

Edit: os arquivos de entrada têm cerca de 8M, gramática ~ 60 regra

questionAnswers(6)

yourAnswerToTheQuestion