sed -e's|^\$|/*&|;t$' -eb -e:$ -e'### handle top end of loop' \
-e's|);$|&*/|;t' -en -eb$ -e'### handle the bottom end'
data data data
/*$globaltext blah gibberjabber
somemorestuff etc
);*/
data data data
/*$otherjunk yada gibberish
etc etc
more etc
);*/
As duas tentativas s///
ubstitutions são t
ested. No primeiro caso, se a substituição for bem-sucedida, sed
não terminará com b
ranching do script e se ramificará em vez do rótulo :$
. Quando não é bem-sucedido, ele não salta o comando b
ranch e, assim, apenas ramifica e insere automaticamente as entradas até que ^\$
seja correspondido.
Depois de combinar, ele entra em um loop fechado começando em :$
e terminando em b$
e, portanto, não tenta a primeira s///
ubstitution novamente até que o loop seja concluído. Neste final do ciclo sed
t
ests o caso de correspondência );$
para uma s///
ubstitution bem-sucedida e, uma vez bem-sucedido, ramifica-se do script para reiniciar o ciclo a partir do topo novamente com a próxima linha de entrada, se houver. Até que ele faça a cópia automática recursiva, em seguida, sobreponha o espaço de padrão com a linha de entrada n
ext para cada iteração - e, assim, nunca precisará de buffers desnecessários.