Thread View: es.comp.os.linux.programacion
4 messages
4 total messages
Started by Alex Estevez
Wed, 25 Jan 2006 11:39
Un poco mas de shell script
Author: Alex Estevez
Date: Wed, 25 Jan 2006 11:39
Date: Wed, 25 Jan 2006 11:39
50 lines
1913 bytes
1913 bytes
Me estoy peleando con una cosilla un tanto absurda: veamos: quiero en archivos sustituir contenidos (rutas) asi que: mi/ruta/elarchivo.dato --- cosas cosas cosas url=directorio/cualquiera cosas cosas --- y haciendo #elscript.sh mi/ruta/elarchivo.dato >otro quede otro -- cosas cosas cosas url=mi/ruta/directorio/cualquiera cosas cosas -- Asi que hago elscript.sh -- #!/bin/sh ARCHIVO=$1 RUTA=`echo $ARCHIVO |sed -e "s/\/[^\/]*$//"` sed -e s/url=/url=$RUTA/ $ARCHIVO -- no me funciona, parece que $RUTA es expandido y procesado por sed que no quiero. pruebo lo siguente: -- #!/bin/sh ARCHIVO=$1 RUTA=`echo $ARCHIVO |sed -e "s/\/[^\/]*$//"| sed -e"s/\//\\\//"` sed -e s/url=/url=$RUTA/ $ARCHIVO -- para que al expandirse $RUTA no de problemas... pero tampoco. Alguna cosa estoy haciendo mal Saludos -- Alex Estevez
Re: Un poco mas de shell script
Author: David Serrano (Hue-Bond)
Date: Wed, 25 Jan 2006 21:31
Date: Wed, 25 Jan 2006 21:31
43 lines
2113 bytes
2113 bytes
Alex Estevez, mié20060125@12:39:28(CET): > > mi/ruta/elarchivo.dato > --- > cosas cosas cosas url=directorio/cualquiera cosas cosas > --- > > y haciendo #elscript.sh mi/ruta/elarchivo.dato >otro > > quede > > otro > -- > cosas cosas cosas url=mi/ruta/directorio/cualquiera cosas cosas > -- > #!/bin/sh > ARCHIVO=$1 > RUTA=`echo $ARCHIVO |sed -e "s/\/[^\/]*$//"` > sed -e s/url=/url=$RUTA/ $ARCHIVO > > no me funciona, parece que $RUTA es expandido y procesado por sed que no > quiero. Tu problema es que $RUTA tiene barras, que le llegan a sed. Por fortuna, sed permite otros delimitadores. Si lo he entendido bien, tienes esto (hecho a mano): $ mkdir tmp/qq $ cat > tmp/qq/foo cosas cosas cosas url=directorio/cualquiera cosas cosas $ A=tmp/qq/foo $ R=$(sed -e 's/\/[^\/]*$//' <<< $A) $ echo $R tmp/qq $ sed -e "s_url=_url=$R/_" $A cosas cosas cosas url=tmp/qq/directorio/cualquiera cosas cosas $ _ -- David Serrano
Re: Un poco mas de shell script
Author: Alex Estevez
Date: Thu, 26 Jan 2006 12:28
Date: Thu, 26 Jan 2006 12:28
22 lines
1706 bytes
1706 bytes
David Serrano (Hue-Bond) escribió: > Alex Estevez, mié20060125@12:39:28(CET): > > > Tu problema es que $RUTA tiene barras, que le llegan a sed. Por fortuna, sed > permite otros delimitadores. > Si, pero en teoria, y cambiando el delimitador funciona, pero, al expandir las barras (/) si estas estan en condiciones (\/) no deberia haber problema no? (que lo hay) es decir A="hola/paco" B="hola\/paco" La segunda deberia funcionar no? Saludos -- Alex Estevez
Re: Un poco mas de shell script
Author: David Serrano (Hue-Bond)
Date: Thu, 26 Jan 2006 19:45
Date: Thu, 26 Jan 2006 19:45
26 lines
1804 bytes
1804 bytes
Alex Estevez, jue20060126@13:28:04(CET): > > Si, pero en teoria, y cambiando el delimitador funciona, pero, al > expandir las barras (/) si estas estan en condiciones (\/) no deberia > haber problema no? (que lo hay) $ A=a_b $ D=/ $ sed -e "s/_/$D/" <<< $A sed: -e expresión #1, carácter 6: unknown option to `s' $ D=\/ $ sed -e "s/_/$D/" <<< $A sed: -e expresión #1, carácter 6: unknown option to `s' $ D=\\/ $ sed -e "s/_/$D/" <<< $A a/b $ D='\/' $ sed -e "s/_/$D/" <<< $A a/b $ _ Es cosa del shell. -- David Serrano
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads