如何使用sed搜索和替换整个单词?在做sed -i 's/[oldtext]/[newtext]/g' <file> 还将替换[oldtext]我不希望这样做的部分匹配。
3 回答

FFIVE
TA贡献1797条经验 获得超6个赞
正则表达式中的\ b匹配单词边界(即第一个单词字符和非单词字符之间的位置):
$ echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
no bar embarassment

呼啦一阵风
TA贡献1802条经验 获得超6个赞
在Mac OS X上,这两种正则表达式语法都不能在sed内用于匹配整个单词
\bmyWord\b
\<myWord\>
现在就听我说,以后再相信我,这个丑陋的语法就是您需要使用的语法:
/[[:<:]]myWord[[:>:]]/
因此,例如,仅在整个单词中用薄荷代替薄荷:
sed "s/[[:<:]]mint[[:>:]]/minty/g"
资料来源:re_format手册页

函数式编程
TA贡献1807条经验 获得超9个赞
在我的一台机器上,用“ \b”(不带引号)分隔单词不起作用。解决方案是使用“ \<”作为开始定界符,并使用“ \>”作为结束定界符。
用Joakim Lundberg的示例进行解释:
$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
no bar embarassment
- 3 回答
- 0 关注
- 1532 浏览
添加回答
举报
0/150
提交
取消