Captura de texto entre chaves no arquivo pré-processado de C

1

Estou trabalhando com um arquivo de origem C pré-processado. Eu quero extrair uma função para processamento adicional. Eu posso encontrar o início da função específica com:

gcc -DNDEBUG -march=native -E source.c > source.pre

BEGIN=$(grep -n 'static inline int some_function' source.pre | cut -f 1 -d ':')

Após o acima executado, eu tenho um número de linha onde a função começa. Neste caso, o seu 7812.

Estou tendo problemas para criar uma maneira de capturar o texto entre as chaves ( { e } ) da função C. Com base em Extrair a seção intermediária de linhas de um arquivo de texto , acho que isso está reduzindo a um problema de encontrar a chave de fechamento imediata ( } ).

Como encontrar a chave de fechamento imediata? Ou como faço para capturar o texto entre chaves no arquivo pré-processado C?

    
por jww 18.04.2016 / 19:06

1 resposta

2

Assumindo que não há nada de maluco na fonte que possa colocar um stray } em uma linha, tente sed .

sed -n '/^static inline int some_function(/,/^}$/p' source.pre
    
por 18.04.2016 / 19:26