sed проглатывает фигурные скобки

sed проглатывает фигурные скобки

У меня есть файл LaTeX, содержащий

\newcommand{\revision}{value}

А во время КИ я хочу сделать следующее:

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

ожидая чего-то вроде\newcommand{\revision}{577f813d}

К сожалению, это происходит:

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

Почему это происходит?

решение1

Попробуй это,

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

\newcommand{\revision}{577f813d}
  • sed требовал двух черных слешей для экранирования обратного слеша.
  • Мы должны сделать обратную ссылку {\\\revision}вместо{\w*}
  • наконец, потребовалась фигурная скобка вокруг, REVкак мы и ожидали.

Связанный контент