Se você tem a versão GNU do sed, você deve ser capaz de usar o comando r
para ler e inserir novo conteúdo de um arquivo, depois excluir a linha do marcador, por exemplo.
sed '/%SUBSTITUTE%/{
r path/to/newcontent
d
}' file
Se você quiser manter o marcador %SUBSTITUTE%
após a inserção, isso é complicado, porque o que você fizer, a extensão GNU r
enfileirará o conteúdo do arquivo até o fim do ciclo de padrões atual (retê-lo antes seria apenas uma questão de remover o comando d
). Provavelmente, a maneira mais simples é anexá-lo ao arquivo newcontent
: você poderia fazer isso na hora, como
sed '/%SUBSTITUTE%/{
r /dev/stdin
d
}' file < <(sed '$a %SUBSTITUTE%' path/to/newcontent)
Tomando uma abordagem completamente diferente, você pode dividir o primeiro arquivo em %SUBSTITUTE%
e depois cat no novo conteúdo
csplit -s file '/%SUBSTITUTE%/'
cat xx00 newcontent xx01
Você também pode fazer um loop bash read
sobre as linhas do primeiro arquivo, e catar o novo arquivo de conteúdo quando você combina com a string do marcador - no entanto eu tive meus dedos estourados por sugerir loops de leitura para processamento de texto este fórum. Infelizmente, nenhum dos dois fornece uma solução no local.