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

Sed para reemplazar variables en bash ¿?

Estas en el tema de Sed para reemplazar variables en bash ¿? en el foro de Unix / Linux en Foros del Web. Estoy realizando un script en bash El tema es que tengo un fichero por ej que contiene: "Este es el SERVER de pepito." Estoy haciendo: ...
  #1 (permalink)  
Antiguo 20/12/2005, 13:03
Avatar de Sh4ka  
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 8 meses
Puntos: 0
Sed para reemplazar variables en bash ¿?

Estoy realizando un script en bash

El tema es que tengo un fichero por ej que contiene:
"Este es el SERVER de pepito."

Estoy haciendo:
read -p " Ingrese el nombre del SERVER " SRVNAME

Como ven guardo la entrada del usuario en la variable $SRVNAME

Lo que quiero es desde el script luego de que tengo definida la variable $SRVNAME
modificar el archivo que contiene la cadena de texto antes citada, y reemplazar la palabra SERVER por el valor de $SRVNAME, ya lo intenté con sed pero parece que no me reconoce el contenido de la variable :( Como puedo hacer ? Siempre hablando de modificarlo desde el mismo script.

Gracias.
  #2 (permalink)  
Antiguo 21/12/2005, 14:57
Avatar de Sh4ka  
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 8 meses
Puntos: 0
Alguien please! ?? o debo plantear esto en el foro de programacion ?
  #3 (permalink)  
Antiguo 21/12/2005, 17:10
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 4 meses
Puntos: 29
¿Que sintaxis has utlizado con sed?

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #4 (permalink)  
Antiguo 21/12/2005, 18:49
Avatar de Sh4ka  
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 8 meses
Puntos: 0
Pregunta

Hola Koveart,

Estoy usando:
cat fichero | sed s/palabra_original/palabra_reemplazo/g > fichero

Y me funciona bien de ese modo para palabras ya definidas en el mismo script, pero cuando quiero asignarle el valor indeterminado de la variable que toma el ingreso del usuario, no me deja :S

o sea:

cat fichero | sed s/palabra_original/$VARIABLE/g > fichero
  #5 (permalink)  
Antiguo 21/12/2005, 19:09
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 4 meses
Puntos: 29
Intenta asi...

Cita:
cat fichero | sed s/palabra_original/\$VARIABLE/g > fichero
Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #6 (permalink)  
Antiguo 22/12/2005, 12:54
Avatar de Sh4ka  
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 8 meses
Puntos: 0
Lamentablemente he tenido resultados malos

El script es algo muy simple, loguea las conexiones root a una maquina, y las envia por email, lo que estoy creando es un script que entre otras cosas, automáticamente setea este tipo de alerta.

Este es el código del fichero "alertaroot", donde "MAQUINA" debe ser reemplazado por la variable que se pide al ingresar en el script de más abajo:

Código:
echo 'ALERTA - Acceso a MAQUINA:' `date` `who` | mail -s " MAQUINA - Acceso a SERVER `who | awk '{print $6}'`" [email protected]
Y este el script de prueba que he hecho para ver si funciona:

Código:
root@machine [~]# cat script
#!/bin/bash
if cat /root/.bash_profile | grep ALERTA > alertaroot.log
then
    echo " Al parecer, la Alerta de logueo Root ya ha sido seteada "
else
       read -p "Ingrese el nombre del server" MAQNAME
       cp /root/.bash_profile /root/bashprofile.bak -f
       cat alertaroot >> /root/.bash_profile
       cat /root/.bash_profile | sed s/MAQUINA/\$MAQNAME/g > /root/.bash_profile
       echo -e "\033[1;37mAlerta de Root instalada...\033[0m"
fi
El resultado final del script es este:
Código:
echo 'ALERTA - Acceso a MAQUINA:' `date` `who` | mail -s " $MAQNAME - Acceso a $MAQNAME `who | awk '{print $6}'`" [email protected]
Como ven, no me toma el valor de la variable, sino el nombre de la misma , alguien que se le ocurra como puedo solucionarlo ????????'
  #7 (permalink)  
Antiguo 22/12/2005, 13:13
Avatar de Sh4ka  
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 8 meses
Puntos: 0
Bueno amigos, lo he hecho funcional al final.. traté por vigésima vez, quitando el escapador para caracteres especiales, e irónicamente anduvo, no se porque antes no lo hacía, en fin.

Hasta ahí bien, pero he comprobado si le paso a la variable un espacio , o sea cuando dice " Ingrese bla bla bla " y le doy "MI MAQUINA" por ej. en vez de solo "MAQUINA" me da el siguiente error y borra todo el contenido del .bash_profile:

Ingrese el nombre del server: MI MAQUINA
Instalando Alerta de Root...
sed: -e expression #1, char 24: Unterminated `s' command

¿?

Última edición por Sh4ka; 22/12/2005 a las 13:20
  #8 (permalink)  
Antiguo 22/12/2005, 13:42
Avatar de Sh4ka  
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 8 meses
Puntos: 0
Fixed , puse comillas al nombre de la variable dentro de la expresion de sed, y listo

Gracias.!
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 01:20.