Agregar salto de línea

wida Mensajes publicados 170 Estado Miembro -  
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   -
Hola,
uso este comando para tener un salto de línea cada vez que encuentro un signo '+':

sed 's/+/\n/g'

Pero en lugar de tener un salto de línea, ¡tengo un simple espacio! ¿sabes por qué? ¿qué está mal con este comando?

Gracias por tu intervención :-)
--
El sueño no conduce a nada, la acción a todo.
(J. FIAUX).
Configuración: Linux Fedora / Firefox 3.5.1

12 respuestas

  1. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
     
    Hola,

    #!/bin/bash Máquinas=maquina1+maquina2+maquina3 lista=$(echo $Máquinas | sed 's/+/\n/g') echo "$lista" 

    --
    106485010510997108
    1
  2. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
     
    Re,

    Te he dicho lo que hacer. Hay que usar las comillas para la visualización.

    lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ cat plus.sh #!/bin/bash Machines=machine1+machine2+machine3 lista=$(echo $Machines | sed 's/+/\n/g') lista2=`echo "$lista"` echo "$lista2" lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ sh plus.sh machine1 machine2 machine3


    --
    106485010510997108
    1
    1. wida Mensajes publicados 170 Estado Miembro 17
       
      justamente no es la visualización lo que me interesa, sino el contenido de la variable..
      --
      El sueño no lleva a nada, la acción a todo.
      (J. FIAUX).
      0
      1. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898 > wida Mensajes publicados 170 Estado Miembro
         
        ¡La exhibición no es más que la forma representativa de la interpretación!

        --
        $ hombre mujer
        No hay una página de manual para mujer.
        0
      2. wida Mensajes publicados 170 Estado Miembro 17 > jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención  
         
        En el ejemplo anterior, hice el echo solo para verificar el contenido de la variable liste2
        aquí hay otro ejemplo:

        allMachine='' for i in 1 4 7 10; do Machines=machine$i+machine$(i+1)+machine$(i+2) liste=$(echo $Machines | sed 's/+/\n/g') allMachine=$allMachine' '$Machines done


        el objetivo es tener la lista de todas las máquinas en allMachine para poder realizar tareas en estas máquinas. Así que realmente no tengo nada que hacer con la visualización, solo era para ver el contenido de las variables
        --
        El sueño no lleva a nada, la acción a todo.
        (J. FIAUX).
        0
  3. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
     
    Hola,

    Raro en efecto ;-\

    ¿Qué versión de "sed"?
    ¿Qué shell?
    ¿En un archivo Unix?

    --
    $ man woman
    No hay página de manual para woman.
    0
  4. wida Mensajes publicados 170 Estado Miembro 17
     
    de hecho, estoy comenzando con linux y no sé cómo obtener toda esta información!!
    lanso el comando desde un script, pero si lo ejecuto directamente desde el shell no hay ningún problema!
    --
    El sueño no lleva a nada, la acción lo lleva todo.
    (J. FIAUX).
    0
    1. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
       
      Entonces, muéstranos tu script para que intentemos identificar qué está mal...

      --
      $ man woman
      No hay una página de manual para woman.
      0
  5. wida Mensajes publicados 170 Estado Miembro 17
     


    #!/bin/bash Máquinas=maquina1+maquina2+maquina3 lista=` echo $Máquinas | sed 's/+/\n/g'` echo $lista

    --
    El sueño no lleva a nada, la acción a todo.
    (J. FIAUX).
    0
  6. wida Mensajes publicados 170 Estado Miembro 17
     
    en realidad me doy cuenta de una cosa, si hago esto:

    Máquinas=máquina1+máquina2+máquina3 echo $Máquinas | sed 's/+/\n/g'

    funciona bien, pero la otra manera de hacer no funciona nunca!!

    --
    El sueño no lleva a nada, la acción lo consigue todo.
    (J. FIAUX).
    0
  7. wida Mensajes publicados 170 Estado Miembro 17
     
    ¡Realmente necesito poner el resultado en una variable! ¡No veo cómo hacerlo sin volver al caso inicial!
    --
    El sueño no lleva a nada, la acción lo lleva todo.
    (J. FIAUX).
    0
    1. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
       
      Re,

      Mira la respuesta 6
      --
      106485010510997108
      0
  8. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Última intervención   4 898
     
    Mira la respuesta de "lami20j", o entonces:

     #!/bin/bash Máquinas=maquina1+maquina2+maquina3 echo -e "${Máquinas//+/\n}" 

    --
    $ man mujer
    No hay página de manual para mujer.
    0
  9. wida Mensajes publicados 170 Estado Miembro 17
     
    Merci, funciona bien, pero en realidad hay siempre un problema cuando uso la variable lista! Quiero que el salto de línea esté en la variable, no solo en la visualización
    ejemplo:
    #!/bin/bash Máquinas=maquina1+maquina2+maquina3 lista=$(echo $Máquinas | sed 's/+/\n/g') lista2=`echo "$lista"` echo $lista2

    lista2 contiene exactamente el mismo valor que lista

    --
    El sueño no lleva a nada, la acción lo lleva todo.
    (J. FIAUX).
    0
  10. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
     
    Re,

    ¿Entonces quieres esto?
    lami20j@debian-acer:~/libros_tutoriales/pcasm/linux-ex$ cat plus.sh #!/bin/bash Máquinas=machine1+machine2+machine3 lista=$(echo $Máquinas | sed 's/+/\\n/g') lista2=$(echo $lista) echo $lista echo -e $lista lami20j@debian-acer:~/libros_tutoriales/pcasm/linux-ex$ sh plus.sh machine1\nmachine2\nmachine3 machine1 machine2 machine3


    --
    106485010510997108
    0
  11. lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
     
    Re,

    así que realmente no tengo nada que hacer con la visualización, solo era para ver el contenido de las variables
    ¡Cálmate, ¿de acuerdo?!
    Estamos tratando de ayudarte y para poder hacerlo primero debemos entender qué es lo que quieres.
    Por el momento no veo qué es lo que deseas, así que solo estoy tanteando el terreno.

    Si quieres ver el contenido de la variable, entonces solo tienes que hacerlo así, no necesitas sed

    lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ cat plus.sh #!/bin/bash Machines=machine1+machine2+machine3 IFS='+' for m in $Machines do echo $m done lami20j@debian-acer:~/livres_tutoriaux/pcasm/linux-ex$ sh plus.sh machine1 machine2 machine3 

    --
    106485010510997108
    0
    1. wida Mensajes publicados 170 Estado Miembro 17
       
      aparentemente me he expresado mal!! Así que lo retomo,
      la variable Machines contiene esto:
      Machines=maquina1+maquina2+maquina3

      quiero que la variable lista contenga esto:
      lista= maquina1 maquina2 maquina3 


      después de los comandos que realizo verifico si mi variable lista contiene lo que quiero, así que hago esto:
      echo $lista

      este código
      echo "$lista"

      o este
      echo -e $lista

      da una salida perfecta, pero no cambia nada en el contenido de mi variable!! No sé si ahora está más claro!!!

      --
      El sueño no lleva a nada, la acción lo lleva todo.
      (J. FIAUX).
      0
  12. dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 660
     
    si haces
    $ set|grep lista
    lista=$'máquina1\nmáquina2\nmáquina3'
    la variable contiene bien lo que quieres
    0