为了账号安全,请及时绑定邮箱和手机立即绑定

sed全词搜索和替换

sed全词搜索和替换

catspeake 2019-10-17 10:34:28
如何使用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


查看完整回答
反对 回复 2019-10-17
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

在Mac OS X上,这两种正则表达式语法都不能在sed内用于匹配整个单词


\bmyWord\b

\<myWord\>

现在就听我说,以后再相信我,这个丑陋的语法就是您需要使用的语法:


/[[:<:]]myWord[[:>:]]/

因此,例如,仅在整个单词中用薄荷代替薄荷:


sed "s/[[:<:]]mint[[:>:]]/minty/g"

资料来源:re_format手册页


查看完整回答
反对 回复 2019-10-17
?
函数式编程

TA贡献1807条经验 获得超9个赞

在我的一台机器上,用“ \b”(不带引号)分隔单词不起作用。解决方案是使用“ \<”作为开始定界符,并使用“ \>”作为结束定界符。


用Joakim Lundberg的示例进行解释:


$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"

no bar embarassment


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 1517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信