sed替换不需要的字符串部分

时间:2013-06-06 20:09:58

标签: shell sed

我想在同一个文件中用$ 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进行不必要的更改。

2 个答案:

答案 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