La manière la plus simple de remplacer les espaces blancs par (traits de soulignement) _ en bash

Récemment, j’ai dû écrire un petit script qui analysait les ordinateurs virtuels dans XenServer et comme les noms des ordinateurs virtuels étaient pour la plupart des espaces blancs, par exemple Windows XP ou Windows Server 2008, je devais les remplacer par des traits de soulignement _. J’ai trouvé une solution simple pour ce faire en utilisant sed, qui est un excellent outil pour la manipulation de chaînes.

echo "This is just a test" | sed -e 's/ /_/g' 

résultats

 This_is_just_a_test 

Vous pouvez le faire en utilisant uniquement le shell, pas besoin de tr ou sed

 $ str="This is just a test" $ echo ${str// /_} This_is_just_a_test 

Ceci est une programmation limite, mais regardez en utilisant tr :

 $ echo "this is just a test" | tr -s ' ' | tr ' ' '_' 

Devrait le faire La première invocation réduit les espaces, la seconde remplace par le trait de soulignement. Vous devez probablement append des tabulations et d’autres caractères d’espacement, ceci est uniquement pour les espaces.