Embora eu concorde com o conselho acima, que você queira obter um analisador para algo mais do que minúsculo ou completamente ad-hoc, é (apenas ;-) possível combinar blocos de várias linhas entre chaves com sed .
Aqui está uma versão de depuração do código sed
sed -n '/[{]/,/[}]/{
p
/[}]/a\
end of block matching brace
}' *.txt
Algumas notas,
- -n significa 'nenhuma linha de impressão padrão como processada'.
- 'p' significa que agora imprime a linha.
- A construção
/[{]/,/[}]/
é uma expressão de intervalo. Isso significa verificar até encontrar algo que corresponda ao primeiro padrão(/[{]/)
AND, em seguida, varrer até encontrar o segundo padrão(/[}]/)
THEN executar qualquer ação que você encontrar entre o {} no código sed. Neste caso, 'p' e o código de depuração. (não explicado aqui, use-o, mod-lo ou retirá-lo como funciona melhor para você).
Você pode remover a depuração / [}] / a \ end do bloco quando provar que o código está realmente correspondendo aos blocos delimitados por {,}.
Este exemplo de código irá ignorar qualquer coisa que não esteja dentro de um par de chaves. Ele será, como observado por outras pessoas acima, facilmente confundido se você tiver qualquer {,} embutido em strings, reg-exps, etc., OU onde a chave de fechamento é a mesma linha , ( obrigado a fred.bear)
Espero que isso ajude.