Используя это как тестовый файл:
It works
elanblkaneglka
_asm {
bla
bla
}
bjkzrbgjkzbjkerzeg
zjegbzkjebzkjg{
blabla
}
__asm { bla bla }
_asm bla bla
bajekbajkegbakeg
Next lines should not work
_asm
{blabla}
_asm {
bla{
bla
}
bla
}
Я пробовал это:
awk '/_+asm *\{/{bracket=1}/_+asm/{comment=1}comment{print "//##", $0}!comment;!bracket||/\}/{comment=0;bracket=0}' test.txt
Конечно, это уродливо, но регулярные выражения не подходят для такого рода проблемы.
Не работает, если в блоке __asm {} есть другие скобки.
Не работает, если {и __asmне находятся на одной линии.
Результат:
It works
elanblkaneglka
//## _asm {
//## bla
//## bla
//## }
bjkzrbgjkzbjkerzeg
zjegbzkjebzkjg{
blabla
}
//## __asm { bla bla }
//## _asm bla bla
bajekbajkegbakeg
Next lines should not work
//## _asm
{blabla}
//## _asm {
//## bla{
//## bla
//## }
bla
}