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