Eu gostaria de remover um bloco de chaves {}
+ seu "nome" (prefixo de 2 palavras), se um padrão for encontrado dentro do bloco.
Tentei alguma sed
magia, mas não consegui.
Por exemplo:
- Padrão: PATTERN PATTERN-X
Entrada
m m1 {
s s1;
s s2;
c c1 {
s s3;
c c2 {
PATTERN PATTERN-X
...
}
s s4;
}
c c3 {
PATTERN PATTERN-X
...
c c4 {
s s4;
}
}
}
Resultado
m m1 {
s s1;
s s2;
c c1 {
s s3;
s s4;
}
}
Geralmente não é uma boa ideia analisar qualquer linguagem funcional e este exemplo se parece com isso. As ferramentas de análise foram projetadas para lidar com a linguagem humana, onde a expressão regular funciona bem. Com isso dito... ainda podemos tentar.
Aqui está minha abordagem usando
pcregrep
:Funciona bem com o seu exemplo, ou seja, zero ou um bloco de
{}
profundidade apósPATTERN
. Se você tiver mais de um bloco, basta estendê-lo para atender às suas necessidades.Resultado:
Você pode tentar este awk