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

관련 정보