如何使用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 關注
- 1575 瀏覽
添加回答
舉報
0/150
提交
取消