nit*_*s24 15 shell ksh replace brackets sed
我有一个字符串,我想删除标点符号.
我开始了
sed 's/[[:punct:]]/ /g'
Run Code Online (Sandbox Code Playgroud)
但是我在HP-UX上遇到的问题一直不喜欢,有时我会得到一个0,而且$在我的字符串中的任何内容都会消失.所以我决定尝试手动完成.
我有以下代码,它适用于我感兴趣的所有标点符号,除了我似乎无法添加方括号"[]"到我的sed与其他任何东西,否则它不会替换任何东西,我不会得到一个错误,所以我不知道该解决什么问题.
无论如何,这是我目前拥有并想要添加[]的内容.
sed 's/[-=+|~!@#\$%^&*(){}:;'\'''\"''\`''\.''\/''\\']/ /g'
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我在Solaris,Redhat和HP上使用KSH
Wil*_*ell 21
您需要在表达式的早期放置括号:
sed 's/[][=+...-]/ /g'
Run Code Online (Sandbox Code Playgroud)
通过将']'作为第一个字符放在开始括号之后,它被解释为字符集的成员而不是结束括号.在括号内的任何位置放置'['使其成为集合的成员.
对于这个特殊的字符集,你还需要-特别处理,因为你没有尝试在[和之间构建一系列字符=.所以把它放在-课程的最后.
您还可以指定要保留的字符[带反转]:
sed 's/[^a-zA-Z0-9]/ /g'
Run Code Online (Sandbox Code Playgroud)
这是我最终得到的代码
`echo "$string" | sed 's/[^a-zA-Z0-9]/ /g'`
Run Code Online (Sandbox Code Playgroud)
我必须把=and-放在最后。