sedを使用して動的コンテンツに一重引用符/二重引用符を含めることができるパターンを置き換える方法は?

sedを使用して動的コンテンツに一重引用符/二重引用符を含めることができるパターンを置き換える方法は?

Markdownファイルの目次を動的に生成し、Markdownファイルの先頭に追加しようとしています。

ただし、動的に生成されたTOCには一重引用符または二重引用符を含めることができ、これはsedの実行に失敗します。

sedを使用して動的に生成されたTOCをファイルの先頭に追加する方法はありますか?どのように?

以下は私のスクリプトとエラーメッセージです。

# filename: add_toc.sh
TOC=$(./gh-md-toc $1)
sed -i "1s/^/"$TOC"/" $1


# Execution 
./add_toc.sh my_doc.md
sed: -e expression #1, char 5: unterminated `s' command

答え1

ed代わりに、TOCジェネレータコマンドの出力をテキストとしてファイルに読み込んで解釈不可能にするsedコマンド!形式を使用することをお勧めします。r

前任者。 (テストされていません - スクリプトがないため./gh-md-toc):

ed -s "$1" <<EOF
0r !./gh-md-toc "$1"
wq
EOF

関連情報