Всем привет.
Столкнулся с интересной задачкой по регуляркам, в частности использую sed. Вот упрощенный вариант.
Имеется такая строка:
1+2+(3+4+(5+6+(7+8)+9))+10+(11+12+13+14+(15+16)+17+(18+19+(20+21))+22)+23+24
Задача 1. Нужно вырезать из нее все, что в скобках. То есть получить такое:
1+2+10+23+24
Задача 2. То же, но начиная со второго уровня скобок. То есть так:
1+2+(3+4)+10+(11+12+13+14+17+22)+23+24
Как?
Update:
Задача 1 решена:
$ echo "1+2+(3+4+(5+6+(7+8)+9))+10+(11+12+13+14+(15+16)+17+(18+19+(20+21))+22)+23+24" | sed ':a s/([^()]*)//g
t a'
1+2++10++23+24
# Или с косметикой:
$ echo "1+2+(3+4+(5+6+(7+8)+9))+10+(11+12+13+14+(15+16)+17+(18+19+(20+21))+22)+23+24" | sed ':a s/([^()]*)+\?//g
t a'
1+2+10+23+24