sed Удаление пробелов вокруг определенного персонажа - PullRequest
2 голосов
/ 31 марта 2010

что было бы лучшим способом удалить пробелы только вокруг определенного символа. Скажем, тире - Some- String- 12345- Here станет Some-String-12345-Here. Что-то вроде sed 's/\ -/-/g;s/-\ /-/g', но я уверен, что должен быть лучший способ.

Спасибо!

Ответы [ 3 ]

5 голосов
/ 31 марта 2010

Если вы имеете в виду все пробелы, а не только пробелы, то вы можете попробовать \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 поддерживает.

3 голосов
/ 31 марта 2010

Попробуйте:

's/ *- */-/g'
1 голос
/ 31 марта 2010

вы также можете использовать awk

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

, если в вашем примере это просто "-"

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