recientemente he tenido que escribir un pequeño script que analiza VMs en XenServer y como los nombres de las máquinas virtuales en su mayor parte con los espacios en blanco en el correo.g Windows XP o Windows Server 2008, he tenido que recortar los espacios en blanco y reemplazarlos con caracteres de subrayado _ . He encontrado una solución simple para hacer esto usando sed que es una gran herramienta cuando se trata de la manipulación de cadenas.

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

devuelve

This_is_just_a_test
  • y la pregunta es ?
  • Hola latz, Stackoverflow es una de las preguntas y respuestas del sitio. Hacer preguntas y demás, la respuesta es, o puede responder a las preguntas de los demás. Si quieres compartir tu conocimiento, usted puede hacer una pregunta, entonces la respuesta es sí mismo (después de dejar algún tiempo para que otros para responder así).
  • oups pensaba que iba a agregar este conocimiento de que manera se almacena aquí. De todos modos va a hacer como dijo u la próxima vez, respondiendo a mi propia pregunta 🙂
InformationsquelleAutor flazzarini | 2009-11-10

2 Comentarios

  1. 155

    Puede hacerlo usando sólo la cáscara, sin necesidad de tr o sed

    $ str="This is just a test"
    $ echo ${str// /_}
    This_is_just_a_test
    • O convertir todos los no-ASCII palabra de caracteres en caracteres de subrayado: ${str//[^a-zA-Z0-9]/_}; de cualquier manera, si no estás pegado a puro POSIX, a continuación, utilizar las funciones disponibles.
    • podría haber puntuaciones que son de fiar así. nunca sabemos.
    • thx por esta solución exactamente lo que estaba buscando. Muchas gracias
    • muy apreciado
  2. 13

    Este es el límite de la programación, pero considerar el uso de tr:

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

    Debe hacerlo. La primera invocación aprieta los espacios de abajo, el segundo reemplaza con carácter de subrayado. Usted probablemente tendrá que añadir las Pestañas y otros caracteres de espacios en blanco, esto es para espacios sólo.

Dejar respuesta

Please enter your comment!
Please enter your name here