Recientemente tuve que escribir un pequeño script que analizaba las VM en XenServer y como los nombres de las VM son en su mayoría con espacios en blanco en, por ejemplo, Windows XP o Windows Server 2008, tuve que recortar esos espacios en blanco y reemplazarlos con guiones bajos _. Encontré una solución simple para hacer esto usando sed, que es una gran herramienta cuando se trata de manipulación de cadenas.
echo "This is just a test" | sed -e 's/ /_/g'
devoluciones
This_is_just_a_test
¿Hay otras formas de lograr esto?
Respuestas:
Puede hacerlo usando solo el caparazón, sin necesidad de
tr
osed
$ str="This is just a test" $ echo ${str// /_} This_is_just_a_test
fuente
${str//[^a-zA-Z0-9]/_}
; de cualquier manera, si no se apega al shell POSIX puro, utilice las funciones disponibles.Esta es una programación límite, pero considere usar tr :
$ echo "this is just a test" | tr -s ' ' | tr ' ' '_'
Deberías hacerlo. La primera invocación reduce los espacios, la segunda se reemplaza con un guión bajo. Probablemente necesite agregar TAB y otros caracteres de espacio en blanco, esto es solo para espacios.
fuente