用于替换不同字符串的Unix命令

时间:2013-04-25 00:20:44

标签: regex shell unix sed

我有这个sed命令:

sed 's/old/new/g' file.txt

但它也替换了字符串'folder'中的旧内容。如果字符串左边或右边没有字符,我该如何替换字符串?

4 个答案:

答案 0 :(得分:3)

如果不挑剔,在两边插入空白都适合你。

sed 's/ old / new /g' file.txt 

答案 1 :(得分:2)

使用\b

's/\bold\b/new/g'

我经常坚持perl:

perl -pi -e 's/\bold\b/new/g' file.txt

答案 2 :(得分:1)

要与不支持PCRE字边界扩展的sed版本兼容,您需要自己模拟该扩展的效果:

sed -r 's@(^|[^[:alpha:]])old($|[^[:alpha:]])@\1new\2@g'

答案 3 :(得分:1)

这可能对您有用:

sed 's/\<old\>/new/g' file

很明显,如果你想要相反(使用GNU sed):

sed 's/\Bold\B/new/g' file