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
REV
de acordo com nossa saída esperada