Ich habe eine LaTeX-Datei mit
\newcommand{\revision}{value}
Und während der CI möchte ich Folgendes tun:
REV=${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
sed -i 's/{\\revision}{\(\w*\)}/\1'"$REV"'/' variables.tex
erwartet etwas in der Art von\newcommand{\revision}{577f813d}
Leider passiert Folgendes:
> REV=test sed 's/{\\revision}{\(\w*\)}/\1'"$REV"'/' variables.tex
\newcommandvaluetest
Warum passiert das?
Antwort1
Versuche dies,
sed -e "s/\({\\\revision}\){\w*}/\1{$REV}/" variables.tex
\newcommand{\revision}{577f813d}
- sed benötigte zwei schwarze Schrägstriche, um dem Backslash zu entkommen.
- Wir sollten zurückverweisen auf
{\\\revision}
statt auf{\w*}
- schließlich war eine Curl-Klammer erforderlich,
REV
um unsere erwartete Ausgabe zu erhalten