Пометка сбалансированных текстовых блоков - PullRequest
0 голосов
/ 03 февраля 2020

Мне нужно пометить блоки текста со скобками, как показано здесь.

Преобразовать это:

group qwerty {
set qwe {
...
set asd {
...
...
set zxc {
...
}
}
set poi {
...
}
}
}

set a123 {
...
...
}

group lkj {
...
group mnb
set rty {
...
...
set fgh {
...
...
...
}
}
}
}

в это:

-g1- group qwerty {
-s1- set qwe {
...
-s2- set asd {
...
...
-s3- set zxc {
...
} -s33-
} -s22-
-s2- set poi {
...
} -s22-
} -s11-
} -g11-

-s1- set a123 {
...
...
} -s11-

-g1- group lkj {
...
-g2- group mnb
-s1- set rty {
...
...
-s2- set fgh {
...
...
...
} -s22-
} -s11-
} -g22-
} -g11-

Группа первого уровня должны быть помечены с -g1- и -g11-. Группа второго уровня с -g2- и -g22-.

Первый набор уровней должен быть помечен с -s1- и -s11-. Второй уровень задается с помощью -s2- и -s22- и т. Д. Я знаю основы c Седа и Авка, но это за пределами того, на что я способен. Надеюсь, что решение с Sed, Awk или Perl. Любая помощь приветствуется.

...