Foros del Web » Administración de Sistemas » Unix / Linux »

Sed con variables

Estas en el tema de Sed con variables en el foro de Unix / Linux en Foros del Web. Hola, estoy en mis comienzos con linux y estoy haciendo un script que dada una cadena me reemplaza los ":" por otra cadena para armar ...
  #1 (permalink)  
Antiguo 13/12/2010, 09:04
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 0
Sed con variables

Hola, estoy en mis comienzos con linux y estoy haciendo un script que dada una cadena me reemplaza los ":" por otra cadena para armar una pagina html con lo cual tengo

if [ $iteracion -gt 1 ]; then
simbolo="td"
else
simbolo="th"
fi
valores="$valores<$simbolo>"
columnas= echo "$linea" | sed "s/:/<\ $simbolo><$simbolo>/g"
valores="$valores $columnas<\ $simbolo><\ tr>"

el problema es que el sed me devuelve vacio, porque? gracias por anticipado.
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
  #2 (permalink)  
Antiguo 14/12/2010, 08:53
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sed con variables

"columnas= echo ..." tiene un error de sintaxis (un espacio luego del =, no hay un `o $( para capturar la salida del comando). ¿no te muestra ningún error al ejecutarlo?
  #3 (permalink)  
Antiguo 14/12/2010, 10:28
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Sed con variables

AlvaroG gracias!! ahora me queda
columnas=`echo "$linea" | tr ":" "<\ $simbolo><$simbolo>"`

no me tiraba error, pero ahora solo me reemplaza los : por < como hago para que me tome todo?
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
  #4 (permalink)  
Antiguo 14/12/2010, 20:28
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sed con variables

Es porque tr reemplaza caracteres, no cadenas.
Probá con sed:
Código:
sed -e "s/:/<$simbolo><$simbolo>/g"
  #5 (permalink)  
Antiguo 14/12/2010, 21:12
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Sed con variables

No me acostumbro al bash... es muy parecido a como lo tenia al principio, ahora me quedo

columnas= `echo "$linea" | sed -e "s/:/<\ ${simbolo}><${simbolo}>/g"`

tengo esa linea y me tira error por ejemplo si linea tiene "data1:data2:data3" me tira
data1<: not found
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
  #6 (permalink)  
Antiguo 15/12/2010, 07:58
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sed con variables

Pues yo lo probé y el reemplazo se hace correctamente:
Código:
# simbolo="th"
# echo "data1:data2:data3" | sed -e "s/:/<\ ${simbolo}><${simbolo}>/g"
data1< th><th>data2< th><th>data3
# columna=`echo "data1:data2:data3" | sed -e "s/:/<\ ${simbolo}><${simbolo}>/g"`
# echo $columna
data1< th><th>data2< th><th>data3
#
  #7 (permalink)  
Antiguo 15/12/2010, 09:10
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Sed con variables

sabes que copie lo que pusiste ahi... y me sigue tirando el mismo error...

if [ $iteracion -gt 1 ]; then
simbolo="td"
else
simbolo="th"
fi


columnas= `echo "data1:data2:data3" | sed -e "s/:/<\ ${simbolo}><${simbolo}>/g"`

echo "columnas: $columnas"
y me marca la linea 72, pero en si en la linea esa es el done de un while (dentro del while esta la funcion que llama a la que tiene esta linea que estuve preguntando...

Estoy perdido...
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
  #8 (permalink)  
Antiguo 15/12/2010, 12:02
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sed con variables

sin ver el resto del código, es imposible saber. No creo que el problema esté en el código que pusiste arriba.
  #9 (permalink)  
Antiguo 16/12/2010, 07:40
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Sed con variables

Primero te doy gracias por las molestias... sigo sin poder hacerlo andar... cree un archivo nuevo y todo lo que tiene el script es lo siguiente.
#!/bin/bash
simbolo="th"

columnas= `echo "data1:data2:data3" | sed -e "s/:/<\ ${simbolo}><${simbolo}>/g"`

echo "columnas: $columnas"
--------
y me tira el siguiente error
$ sh test.sh
test.sh: 4: data1<: not found
columnas:
-----------------

Ya de por si no entiendo mucho de linux (por eso estoy intentando entender) pero como puede ser que a vos te ande y a mi no? estoy usando ubuntu y me lo instale hace poco...
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
  #10 (permalink)  
Antiguo 16/12/2010, 08:39
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sed con variables

En BASH no se pone espacio luego del = al asignar un valor a una variable, no hace lo que se supone que haga.
Al poner el espacio, en vez de
Código:
VARIABLE="valor"
estás haciendo esto:
Código:
VARIABLE="valor" comando
Que es una forma normal de ejecutar comando forzando a que, durante su ejecución, VARIABLE sea "valor" en vez de algún otro valor que ya tenga en el entorno, por ejemplo:
Código:
# A="a"
# miprograma <<< si necesita interactuar con el valor de A, recibirá "a"
# A="b" miprograma <<< si necesita interactuar con el valor de A, recibirá "b"
# <<< en este punto, A vuelve a valer "a", no se modifica el valor original
En este caso particular, el valor es vacío, y resulta
Código:
VARIABLE= comando
donde comando se forma como el resultado de la sustitución, y por eso intenta ejecutar data1.


Saludos.
  #11 (permalink)  
Antiguo 16/12/2010, 08:57
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Sed con variables

Que barbaro!!! gracias, mil gracias... anda perfecto, con que me trabare ahroa? :p
Nuevamente Gracias
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.

Etiquetas: sed, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:02.