2

我想在同一个文件中用 $version_1 替换 VERSION 变量,用 $version_2 替换 PROG_VERSION 变量。我为此使用了 sed

sed s/VERSION/$version_1/g | sed s/PROG_VERSION/$version_2/g

问题是 sed 还用 PROG_($version_1 的值)替换了 PROG_VERSION 的一部分。我应该如何防止 sed 进行不必要的更改。

4

2 回答 2

3

问题是 sed 还用 PROG_($version_1 的值)替换了 PROG_VERSION 的一部分。我应该如何防止 sed 进行不必要的更改。

在 sed 中使用单词边界来防止不需要的替换:

sed "s/\bVERSION\b/$version_1/g"

或者:

sed "s/\<VERSION\>/$version_1/g"

对于 Mac OSX:出于某种奇怪的原因,上述语法都不起作用,您需要使用这种奇怪的语法:

 sed "s/[[:<:]]VERSION[[:>:]]/$version_1/g"
于 2013-06-06T20:27:38.753 回答
1

我认为最简单的方法是切换命令的顺序。

sed "s/PROG_VERSION/$version_2/g; s/VERSION/$version_1/g" file
于 2013-06-06T20:12:25.150 回答