[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: sustituciones en fichero de texto



Hola lista,

necesito ayuda en un tema que a priori debería ser trivial, pero no
consigo solucionarlo. Os comento. Tengo varios ficheros de texto y la
intención es realizar sobre su contenido una sustitución masiva, me
explico mejor. Tengo un fichero que tiene, por ejemplo la siguientes
líneas:
------------
   ############################
  ##                                                                  ##
 ##                      --  daemons  --                    ##
##                                                                  ##
############################

destination df_daemon {
       file("$DIR/daemon.log"
}
---------

La idea es sustituir la variable $DIR, en todos los ficheros, por un
valor que se establezca oportuno en dicho momento.

Recorrer los ficheros de texto y su contenido no es complicado, pero
realizar las sustituciones oportunas si. He probado a realizarlo con
un sed, pero no consigo lo que deseo. La línea de sed que utilizo es
la siguiente:
---
var=/home
sed -e "s/$DIR/$var/g"
---
La salida es una sustitución de $DIR por $var, pero no por el
contenido de ésta. Alguna idea de cómo solucionar este problema?

No entiendo muy bien donde están definidas esas variables. No sé si
quieres sustituirlo desde el bash, desde dentro del propio archivo,
o desde otro script...

Imaginemos que tienes este archivo:

#inicio archivo
destination df_daemon {
       file("$DIR/daemon.log"
}
aqui pongo un $DIR y otro $DIR...
#fin archivo

si haces un "cat archivo | sed s/\$DIR/lala/g" tendrás:

#inicio output
destination df_daemon {
       file("lala/daemon.log"
}
aqui pongo un lala y otro lala...
#fin output

si estas en el shell, puedes hacer un "e=sustitucion", con
lo que asignas a la variable $e el valor "sustitucion", y
haces un "cat archivo | sed s/\$DIR/$sustitucion/g";

#inicio output
destination df_daemon {
       file("sustitucion/daemon.log"
}
aqui pongo un sustitucion y otro sustitucion...
#fin output

IMPORTANTE: vigila el argumento del sed... fíjate que no
he puesto $DIR sino \$DIR, para pasar el $ como literal.

Pero repito, me faltan datos, no sé desde donde vas a
realizar la sustitución.



--
Power by Debian.

Un saludo,

Otro.


Javier.




---------------------------------------------
Arnau Carrasco - http://www.arnaucarrasco.com
---------------------------------------------




Reply to: