다음이 포함된 LaTeX 파일이 있습니다.
\newcommand{\revision}{value}
그리고 CI 중에 다음을 수행하고 싶습니다.
REV=${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
sed -i 's/{\\revision}{\(\w*\)}/\1'"$REV"'/' variables.tex
다음과 같은 내용을 기대하고 있습니다.\newcommand{\revision}{577f813d}
불행하게도 이런 일이 발생합니다:
> REV=test sed 's/{\\revision}{\(\w*\)}/\1'"$REV"'/' variables.tex
\newcommandvaluetest
왜 이런 일이 발생합니까?
답변1
이 시도,
sed -e "s/\({\\\revision}\){\w*}/\1{$REV}/" variables.tex
\newcommand{\revision}{577f813d}
- sed는 백슬래시를 피하려면 두 개의 검은색 슬래시가 필요했습니다.
{\\\revision}
대신에 역참조해야 합니다 .{\w*}
REV
마침내 예상 출력에 따라 컬 버팀대가 필요했습니다.