Это, вероятно, легче решить в perl, чем в sed.С одной стороны, выполнять многострочные совпадения тривиально.
perl -0777 -pe 's/foo.*?bar/glarch/sg'
Но с другой стороны, вы можете сделать рекурсивное сопоставление с вложенными скобками, что, боюсь, вам может понадобиться здесь.Поскольку Perl использует ERE, а sed использует BRE, вам будет легче, так как вам не понадобится так много обратной косой черты.
Кроме того, поддерживаются все вещи типа \s+
.
Кроме того, если это текст UTF-8, у вас все еще будет все в порядке;просто добавьте флаг командной строки типа -CSD
.
Также есть транслятор sed-to-perl под названием s2p, так что вы знаете, что это правильный суперсет.
Черт возьмиконечно много также с.☺