다음이 포함된 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
마지막으로 예상 출력에 따라 중괄호가 필요합니다.