Escape o texto antes de canalizar para o sed [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    

Estou passando para o sed para substituir o texto que parece ter alguns caracteres que ele não gosta.
O texto vem de git log graph e é algo como:

ID- desc author                                                                                                   
ID- desc author  

obtenho unescaped newline inside substitute pattern
Como posso escapar de tudo antes de canalizar para sed?

Example:    
COMMIT=$(git log my_branch...origin/master --pretty=format:'%h %an')    
FINAL=$(cat msg.txt | sed -E "s/--PLACEHOLDER--/$COMMIT/)    
    
por Jim 11.06.2018 / 13:44

1 resposta

1

Você pode fazer isso com a substituição simples de parâmetro bash:

msg=$(< msg.txt)
# or, for this demo
msg="This is the commit message.
--PLACEHOLDER--
That's it."

commit="id1 - message 1
id2 - message 2
id3 - message 3"

final="${msg//--PLACEHOLDER--/"$commit"}"
echo "$final"
This is the commit message.
id1 - message 1
id2 - message 2
id3 - message 3
That's it.
    
por 11.06.2018 / 16:43