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

时间:2010-03-31 12:30:10

标签: sed whitespace

什么是仅删除特定字符周围的空格的最佳方法。让我们说一个短划线 - Some- String- 12345- Here将成为Some-String-12345-Here。像sed 's/\ -/-/g;s/-\ /-/g'这样的东西,但我相信一定有更好的方法。

谢谢!

3 个答案:

答案 0 :(得分:5)

如果您指的是所有空格,而不仅仅是空格,那么您可以尝试\s

echo 'Some- String- 12345- Here' | sed 's/\s*-\s*/-/g'

输出:

Some-String-12345-Here

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

echo 'Some- String- 12345- Here' | sed 's/[[:space:]]*-[[:space:]]*/-/g'

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

答案 1 :(得分:3)

尝试:

's/ *- */-/g'

答案 2 :(得分:1)

你也可以使用awk

$ echo 'Some   - String-    12345-' | awk -F" *- *" '{$1=$1}1' OFS="-"
Some-String-12345-

如果你的例子只是“ - ”

$ s="Some- String- 12345-"
$ echo ${s//- /-}
Some-String-12345-