I would like to replace a a set of words by another word via sed. My
first try was:
echo "a cat or a dog" | sed 's/\(cat\)\|\(dog\)/PET/g'
I also tried some variations of this. But all failed.
For any help I would be very happy.
Cheers,
Toby
P.S. some variations of the search pattern
\(cat|dog\)
\(\(cat\)\|\(dog\)\)
Works for me:
$ echo "a cat or a dog" | sed 's/\(cat\)\|\(dog\)/PET/g'
a PET or a PET
The \(...\) aren't necessary, since the \| has low precedence.
$ echo "a cat or a dog" | sed 's/cat\|dog/PET/g'
a PET or a PET
$ sed --version
GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
--
Alan Curry
indeed I had the BSD version. I followed this to install GNU. Now it
works.
Thanks a lot.
Cheers,
Toby
References
[1] http://dsmarkchen.blogspot.com/2007/12/gnu-sed-on-mac.html