1

我有这个 sed 命令:

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

但它也替换了字符串“文件夹”中的旧版本。如果左侧或右侧没有字符,我该如何替换字符串?

4

4 回答 4

3

如果不挑剔,在两侧插入空白将适合您。

sed 's/ old / new /g' file.txt 
于 2013-04-25T02:16:58.940 回答
2

使用\b

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

我通常坚持使用 perl:

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

于 2013-04-25T00:27:20.617 回答
1

这可能对您有用:

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

顺便说一句,如果你想要相反的(使用 GNU sed):

sed 's/\Bold\B/new/g' file
于 2013-04-25T06:06:56.627 回答
1

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

sed -r 's@(^|[^[:alpha:]])old($|[^[:alpha:]])@\1new\2@g'
于 2013-04-25T00:25:47.443 回答