sed 삼키기 교정기 / 교정기

sed 삼키기 교정기 / 교정기

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

관련 정보