sed traga frenillos / llaves

sed traga frenillos / llaves

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 REVsegún nuestro resultado esperado

información relacionada