sed 燕子大括號/大括號

sed 燕子大括號/大括號

我有一個 LaTeX 文件,其中包含

\newcommand{\revision}{value}

在 CI 期間我想做以下事情:

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 需要兩個黑色斜線來轉義反斜線。
  • 我們應該反向引用 the {\\\revision}而不是{\w*}
  • REV最後根據我們的預期輸出需要一個大括號

相關內容