以下を含む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 では、バックスラッシュを終了するには 2 つの黒いスラッシュが必要です。
{\\\revision}
代わりに逆参照する必要があります。{\w*}
REV
最後に、期待される出力に応じて中括弧が必要です。