sed删除某些字符周围的空格

Gar*_*uth 2 whitespace sed

什么是仅删除特定字符周围的空格的最佳方法.让我们说一个破折号 - Some- String- 12345- Here将成为Some-String-12345-Here.有点像,sed 's/\ -/-/g;s/-\ /-/g'但我相信一定有更好的方法.

谢谢!

Mar*_*ers 5

如果你的意思是所有空格,而不仅仅是空格,那么你可以尝试\s:

echo 'Some- String- 12345- Here' | sed 's/\s*-\s*/-/g'
Run Code Online (Sandbox Code Playgroud)

输出:

Some-String-12345-Here

或者使用[:space:]字符类:

echo 'Some- String- 12345- Here' | sed 's/[[:space:]]*-[[:space:]]*/-/g'
Run Code Online (Sandbox Code Playgroud)

不同版本的sed可能支持或不支持这些,但GNU sed可以支持.