sed whole word search and replace

ksuralta picture ksuralta · Jun 23, 2009 · Viewed 108.2k times · Source

How do I search and replace whole words using sed?

Doing

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

will also replace partial matches of [oldtext] which I don't want it to do.

Answer

Joakim Lundborg picture Joakim Lundborg · Jun 23, 2009

\b in regular expressions match word boundaries (i.e. the location between the first word character and non-word character):

$ echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
no bar embarassment