如何使用sed搜索和替换整个单词?
干
sed -i 's/[oldtext]/[newtext]/g' <file> 
也将替换[oldtext]我不希望它做的部分匹配.
Joa*_*org 153
正则表达式中的\ b匹配单词边界(即第一个单词字符和非单词字符之间的位置):
$ echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
no bar embarassment
Lar*_*ndt 130
在Mac OS X上,这些正则表达式语法都不能在sed中用于匹配整个单词
\bmyWord\b\<myWord\>现在听我说,相信我,这个丑陋的语法是你需要使用的:
/[[:<:]]myWord[[:>:]]/因此,例如,更换薄荷与薄荷的全字:
sed "s/[[:<:]]mint[[:>:]]/minty/g"来源:re_format手册页
Mit*_*eat 13
使用\bword边界:
sed -i 's/\boldtext\b/newtext/g' <file>
在我的一台机器中,用" \b"(没有引号)分隔单词不起作用.解决方案是使用" \<"作为起始分隔符,使用" \>"作为结束分隔符.
用Joakim Lundberg的例子来解释:
$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
no bar embarassment