Hi,
How do I search and replace whole words using sed? Doing sed -i 's/[oldtext]/[newtext]/g' will also replace partial matches of [oldtext] which I don't want it to do.
Thanks, Kenneth
Hi,
How do I search and replace whole words using sed? Doing sed -i 's/[oldtext]/[newtext]/g' will also replace partial matches of [oldtext] which I don't want it to do.
Thanks, Kenneth
\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
In one of my machine, delimiting the word with "\b
" (without the quotes) did not work. The solution was to use "\<
" for starting delimiter and "\>
" for ending delimiter.
To explain with Joakim Lundberg's example:
$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
no bar embarassment
$ echo "bar embarassment"|awk '{for(o=1;o<=NF;o++)if($o=="bar")$o="no bar"}1'
no bar embarassment