🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#1384
Author: Alex Estevez
Date: Wed, 25 Jan 2006 11:39
50 lines
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
#1385
Author: David Serrano (Hue-Bond)
Date: Wed, 25 Jan 2006 21:31
43 lines
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
#1386
Author: Alex Estevez
Date: Thu, 26 Jan 2006 12:28
22 lines
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
#1387
Author: David Serrano (Hue-Bond)
Date: Thu, 26 Jan 2006 19:45
26 lines
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