Tengo un archivo LaTeX que contiene
\newcommand{\revision}{value}
Y durante CI quiero hacer lo siguiente:
REV=${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
sed -i 's/{\\revision}{\(\w*\)}/\1'"$REV"'/' variables.tex
esperando algo parecido a\newcommand{\revision}{577f813d}
Lamentablemente sucede esto:
> REV=test sed 's/{\\revision}{\(\w*\)}/\1'"$REV"'/' variables.tex
\newcommandvaluetest
¿Por qué pasó esto?
Respuesta1
Prueba esto,
sed -e "s/\({\\\revision}\){\w*}/\1{$REV}/" variables.tex
\newcommand{\revision}{577f813d}
- sed requirió dos barras negras para escapar de la barra invertida.
- Deberíamos hacer referencia a the
{\\\revision}
en lugar de{\w*}
- finalmente requirió una llave
REV
según nuestro resultado esperado