我想在同一个文件中用$ 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进行不必要的更改。
答案 0 :(得分:3)
问题是sed也替换了PROG_VERSION的一部分 PROG_($ version_1的值)。我应该如何防止sed制作 不必要的变化。
在sed中使用单词边界以防止不必要的替换:
sed "s/\bVERSION\b/$version_1/g"
OR:
sed "s/\<VERSION\>/$version_1/g"
对于Mac OSX:由于某些奇怪的原因,上述语法都不起作用,您需要使用这种奇怪的语法:
sed "s/[[:<:]]VERSION[[:>:]]/$version_1/g"
答案 1 :(得分:1)
我认为最简单的方法是切换命令的顺序。
sed "s/PROG_VERSION/$version_2/g; s/VERSION/$version_1/g" file