sed全词搜索和替换

如何使用sed搜索和替换整个单词?


在做


sed -i 's/[oldtext]/[newtext]/g' <file> 

还将替换[oldtext]我不希望这样做的部分匹配。


catspeake
浏览 1518回答 3
3回答

FFIVE

正则表达式中的\ b匹配单词边界(即第一个单词字符和非单词字符之间的位置):$ echo "bar embarassment" | sed "s/\bbar\b/no bar/g"no bar embarassment

呼啦一阵风

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

函数式编程

在我的一台机器上,用“ \b”(不带引号)分隔单词不起作用。解决方案是使用“ \<”作为开始定界符,并使用“ \>”作为结束定界符。用Joakim Lundberg的示例进行解释:$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"no bar embarassment
打开App,查看更多内容
随时随地看视频慕课网APP