我正在尝试为我的 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
而不是sed
, 及其命令!
的形式r
将 TOC 生成器命令的输出作为文本读取到文件中,而不可能被解释。
前任。 (未经测试 - 因为我没有脚本./gh-md-toc
):
ed -s "$1" <<EOF
0r !./gh-md-toc "$1"
wq
EOF