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

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
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
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
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
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
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
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
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
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
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
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
lami20j Mensajes publicados 21506 Fecha de registro   Estado Moderador, Colaborador de seguridad Última intervención   3 571
 
Re,

Mira la respuesta 6
--
106485010510997108
0
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
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
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
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
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
dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 659
 
si haces
$ set|grep lista
lista=$'máquina1\nmáquina2\nmáquina3'
la variable contiene bien lo que quieres
0