Hola a todos, a ver, tengo una cadena del tipo: dato1,dato2,dato3,dato4 y quiero que me salga: dato1 dato2 dato3 dato4 Es decir, que me recorra la cadena y la separe por comas. Como podeis ver, mi experiencia con scripts es tan proxima a cero como queramos. Alguna idea? Gracias! miguel
Indica como tomas la cadena (dato1,dato2,dato3,dato4), si la tomas desde un archivo o la ingresas por teclado toda junta y sin espacios. Saludos, Malena. miguel wrote:
Hola a todos,
a ver, tengo una cadena del tipo:
dato1,dato2,dato3,dato4
y quiero que me salga:
dato1 dato2 dato3 dato4
Es decir, que me recorra la cadena y la separe por comas. Como podeis ver, mi experiencia con scripts es tan proxima a cero como queramos.
Alguna idea?
Gracias! miguel
On Thursday 20 May 2004 14:40, Malena Rios wrote:
Indica como tomas la cadena (dato1,dato2,dato3,dato4), si la tomas desde un archivo o la ingresas por teclado toda junta y sin espacios.
Gracias, La quiero pasar como cadena... Se trata de hacer un bucle en le que,por ejemplo, sacar los datos por pantalla. Del tipo: CADENA="dato1,dato2,dato3,dato4" i=1 while [ $i -le 4] do [cacho de código que no sé] echo ... i=`expr $i + 1` done Y en los puntos "..." debería salir dato1, despues dato2, etc...
La quiero pasar como cadena...
Se trata de hacer un bucle en le que,por ejemplo, sacar los datos por pantalla. Del tipo:
CADENA="dato1,dato2,dato3,dato4"
i=1 while [ $i -le 4] do [cacho de código que no sé] echo ... i=`expr $i + 1` done
Y en los puntos "..." debería salir dato1, despues dato2, etc...
Haz lo siguiente: CADENA="dato1,dato2,dato3,dato4" for i in $(echo $CADENA | tr "," " ") do echo $i done Saludos Luis Roa P:
El 2004-05-20 a las 15:20 +0100, miguel escribió:
Se trata de hacer un bucle en le que,por ejemplo, sacar los datos por pantalla. Del tipo:
CADENA="dato1,dato2,dato3,dato4"
Una manera muy curiosa, y que no necesita programas externos al bash (y por tanto más rápida que usar tr, cut, o awk), es esta: #!/bin/bash CADENA="dato1,dato2,dato3,dato4" ALT_IFS="$IFS" IFS="," set $CADENA echo $1 echo $2 echo $3 echo $4 IFS=$ALT_IFS Comprobación: cer@nimrodel:~/bin> palabras dato1 dato2 dato3 dato4 cer@nimrodel:~/bin> Para acordarme - que yo tampoco se mucho de scripts, aunque haya hecho unos cuantos - he buscado primero en "set", para ver que era con IFS, luego he buscado con "mc" la cadena IFS en los scripts de inicio de sistema, y he encontrado por lo menos 4 que usan ese truco. Más información sobre cosas "desas": /usr/share/doc/howto/es/Bash-Prompt-Como.gz /usr/share/doc/howto/es/Bash-Prog-Intro-COMO.gz Y otro "advanced" creo que hay por ahí. -- Saludos Carlos Robinson
:-O ! Gracias! On Monday 24 May 2004 14:03, Carlos E. R. wrote:
El 2004-05-20 a las 15:20 +0100, miguel escribió:
Se trata de hacer un bucle en le que,por ejemplo, sacar los datos por pantalla. Del tipo:
CADENA="dato1,dato2,dato3,dato4"
Una manera muy curiosa, y que no necesita programas externos al bash (y por tanto más rápida que usar tr, cut, o awk), es esta:
#!/bin/bash
CADENA="dato1,dato2,dato3,dato4"
ALT_IFS="$IFS" IFS=","
set $CADENA echo $1 echo $2 echo $3 echo $4
IFS=$ALT_IFS
Comprobación:
cer@nimrodel:~/bin> palabras dato1 dato2 dato3 dato4 cer@nimrodel:~/bin>
Para acordarme - que yo tampoco se mucho de scripts, aunque haya hecho unos cuantos - he buscado primero en "set", para ver que era con IFS, luego he buscado con "mc" la cadena IFS en los scripts de inicio de sistema, y he encontrado por lo menos 4 que usan ese truco.
Más información sobre cosas "desas":
/usr/share/doc/howto/es/Bash-Prompt-Como.gz /usr/share/doc/howto/es/Bash-Prog-Intro-COMO.gz
Y otro "advanced" creo que hay por ahí.
-- Saludos Carlos Robinson
tomalo asi: awk 'BEGIN{RS=","}{print $0}' archivo_con_datos.txt Dentro de archivo_con_datos.txt tiene el contenido: dato1,dato2,dato3,dato4 Saludos. On Thu, 20 May 2004, Malena Rios wrote:
Indica como tomas la cadena (dato1,dato2,dato3,dato4), si la tomas desde un archivo o la ingresas por teclado toda junta y sin espacios.
Saludos, Malena.
miguel wrote:
Hola a todos,
a ver, tengo una cadena del tipo:
dato1,dato2,dato3,dato4
y quiero que me salga:
dato1 dato2 dato3 dato4
Es decir, que me recorra la cadena y la separe por comas. Como podeis ver, mi experiencia con scripts es tan proxima a cero como queramos.
Alguna idea?
Gracias! miguel
-- Para dar de baja la suscripci�n, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com
participants (5)
-
Carlos E. R.
-
Luis Roa
-
Malena Rios
-
miguel
-
Victor Sanchez Quijada