104 votes

Le moyen le plus simple de remplacer les espaces blancs par (underscores) _ in bash

récemment, j'ai dû écrire un petit script qui analysait les VMs dans XenServer et comme les noms des VMs sont principalement avec des espaces blancs dans par exemple Windows XP ou Windows Server 2008, j'ai dû découper ces espaces blancs et les remplacer par underscores _ . J'ai trouvé une solution simple pour ce faire en utilisant sed qui est un excellent outil quand il s'agit de manipulation de corde.

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

retours

This_is_just_a_test

Existe-t-il d'autres moyens d'y parvenir ?

198voto

ghostdog74 Points 86060

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

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

21voto

unwind Points 181987

Il s'agit d'une programmation limite, mais regardez en utilisant tr :

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

La première invocation comprime les espaces, la seconde remplace par un trait de soulignement. Vous avez probablement besoin d'ajouter des tabulations et d'autres caractères d'espaces blancs, c'est uniquement pour les espaces.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X