sed engole aparelho / colchetes

sed engole aparelho / colchetes

Eu tenho um arquivo LaTeX contendo

\newcommand{\revision}{value}

E durante o CI quero fazer o seguinte:

REV=${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
sed -i 's/{\\revision}{\(\w*\)}/\1'"$REV"'/' variables.tex

esperando algo nos moldes de\newcommand{\revision}{577f813d}

Infelizmente isso acontece:

> REV=test sed 's/{\\revision}{\(\w*\)}/\1'"$REV"'/' variables.tex
\newcommandvaluetest

Por que isso acontece?

Responder1

Tente isso,

sed -e "s/\({\\\revision}\){\w*}/\1{$REV}/" variables.tex

\newcommand{\revision}{577f813d}
  • sed exigiu duas barras pretas para escapar da barra invertida.
  • Deveríamos fazer referência retroativa ao {\\\revision}em vez de{\w*}
  • finalmente precisei de uma chave de ondulação REVde acordo com nossa saída esperada

informação relacionada