2010-03-31 5 views
2

Quel serait le meilleur moyen de supprimer des espaces autour d'un certain caractère. Imaginons qu'un tiret - Some- String- 12345- Here devienne Some-String-12345-Here. Quelque chose comme sed 's/\ -/-/g;s/-\ /-/g' mais je suis sûr qu'il doit y avoir un meilleur moyen.sed Suppression des espaces autour de certains caractères

Merci!

Répondre

5

Si vous voulez dire tous les espaces, et pas seulement des espaces, vous pouvez essayer \s:

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

Sortie:

 
Some-String-12345-Here 

Ou utilisez le caractère [:space:] Classe:

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

Différentes versions de sed peuvent ou non les supporter, mais GNU sed le fait.

3

Essayez:

's/ *- */-/g' 
1

vous pouvez utiliser awk ainsi

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

si son juste "-" dans votre exemple

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