I\'m trying to find and replace one or more occurrences of a character using sed on a mac, sed from the BSD General Commands.
I try:
echo \"foobar\"
echo "foobar" | sed -e "s/o\\+//g"
worked for me on Mac OS X 10.6.
I remembered that I replaced my BSD version of sed with GNU sed 4.2, so this may or may not work for you.
Using the /g
flag, s/o//g
is enough to replace all o occurrences.
Why +
doesn't work as expected: in old, obsolete re +
is an ordinary character (as well as |
, ?
). You should specify -E
flag to sed
to make it using modern regular expressions:
echo "foobar" | sed -E -e "s/o+//"
# fbar
Source: man 7 re_format
.
You can use this, on linux or unix.
echo "foobar" | perl -pe "s/o+//g"
Sed is sad for regexes. You could either try the -E, which might work with BSD, or you could try this one instead:
sed -e "s/o\{1,\}/"
Perhaps there are too many sed's out there to have a usable tool on any system.