Use %code%
Aqui está uma explicação:
%pre%Para sua substituição, você só deseja inserir um espaço. %code% não funcionará lá, já que é uma abreviação de uma classe de caracteres e o mecanismo de regex não saberia qual caractere colocar lá.
O %code% deve ser escapado na regex porque com o mecanismo de regex do sed %code% é um caractere normal, enquanto %code% é um metacaractere para 'um ou mais'. Na página 86 de Mastering Regular Expressions , Jeffrey Friedl menciona em uma nota de rodapé que ed e grep usavam parênteses com escape porque "Ken Thompson achava que expressões regulares seriam usadas para trabalhar primariamente com C código, onde a necessidade de combinar parênteses crus seria mais comum do que a retro-referência. "Suponho que ele se sentia da mesma maneira sobre o sinal de mais, daí a necessidade de escapar para usá-lo como um metacaractere. É fácil ser enganado por isso .
No sed, você precisará fugir de %code% , %code% , %code% , %code% e %code% . ou use -r para usar a regex estendida (então, parece que %code% ou %code%