我想在同一个文件中用 $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 进行不必要的更改。
问题是 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"
我认为最简单的方法是切换命令的顺序。
sed "s/PROG_VERSION/$version_2/g; s/VERSION/$version_1/g" file