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

関連情報