I have a string that i am want to remove punctuation from.
I started with
sed 's/[[:punct:]]/ /g'
But i had problems on HP-UX not liking that all the time, and some times i would get a 0 and anything after a $
in my string would dissappear. So i decided to try to do it manually.
I have the following code which works on all my punctuation that I am interested in, except I cannot seem to add square brackets "[]" to my sed with anything else, otherwise it does not replace anything, and i dont get an error, so I am not sure what to fix.
Anyways this is what i currently have and would like to add []
to.
sed 's/[-=+|~!@#\$%^&*(){}:;'\'''\"''\`''\.''\/''\\']/ /g'
BTW I am using KSH on Solaris, Redhat & HP
You need to place the brackets early in the expression:
sed 's/[][=+...-]/ /g'
By placing the ']' as the first character immediately after the opening bracket, it is interpreted as a member of the character set rather than a closing bracket. Placing a '[' anywhere inside the brackets makes it a member of the set.
For this particular character set, you also need to deal with -
specially, since you are not trying to build a range of characters between [
and =
. So put the -
at the end of the class.