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

Re: sustituciones en fichero de texto



El 14/06/07, Arnau Carrasco <ra@ucv.es> escribió:
>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
---------------------------------------------



--
To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Hola,

ya está solucionado. Muchas gracias.

El problema estaba en que no ponía los \$DIR y entonces no me
reconocías la cosas como debería.

Muchas gracias por vuestra ayuda :)

--
Power by Debian.

Un saludo,

Javier.



Reply to: