私は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
最終的に、予想出力に応じてカールブレースが必要になりました