sedにパイプする前にテキストをエスケープしてください。

sedにパイプする前にテキストをエスケープしてください。

置き換えるためにsedにテキストを渡していますが、テキストに気に入らない文字が含まれているようです。
テキストのソースは次のようgit log graphになります。

ID- desc author                                                                                                   
ID- desc author  

わかりました。unescaped newline inside substitute pattern
sedで接続する前にすべてをどのように避けますか?

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

ベストアンサー1

単純な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.

おすすめ記事