Article View: es.comp.os.linux.programacion
Article #8196Re: Sustituir cadenas con sed !! huuyy!!
From: David Ramón Yanes Fariña
Date: Sat, 28 Dec 2002 02:31
Date: Sat, 28 Dec 2002 02:31
73 lines
4438 bytes
4438 bytes
On Sat, 28 Dec 2002 02:05:12 +0000, Humitsec wrote:
> Vayamos por partes.
>
> En primer lugar, la forma para seleccionar campos de la expresi�n
> regular inicial y copiarlas tal cual en la expresi�n de sustituci�n es
> delimit�ndola entre \( y \) en la expresi�n regular, y referenci�ndola
> en la expresi�n de sustituci�n mediante \n, siendo 'n' el n�mero de
> expresi�n seleccionada, utilizando \1 para la primera expresi�n, \2 para
> la segunda, y as� sucesivamente.
>
> Por ejemplo, tenemos un fichero llamado �enlaces� que contiene un
> listado de nombres de fichero del tipo �nombre.htm�, y queremos que
> estas referencias pasen a ser del tipo �nombre.html�. En este caso
> ejecutar�amos:
>
> sed -e 's/\(.*\)htm/\1html/' enlaces
>
> Ahora vamos a analizar esta expresi�n. La expresi�n regular empleada es
> �\(.*\)htm�. Hemos dicho que con \( y \) delimitamos un campo en dicha
> expresi�n para ser luego referenciada en la sutituci�n. De esta forma,
> la expresi�n regular podr�a entenderse como �.*htm�, considerando que
> todo aquello que resulte referenciado de .* ser� guardado como primera
> variable, y se podr� incluir tantas veces como se quiera en la
> sustituci�n utilizando \1, por ser la primera variable.
>
>
>
> sed -e 's/play_wav(\(.*\),.*,.*);/play_wav(\1);/' fichero
>
Funciona... :)
david@elisa:~$ history | grep sed | less
[...]
113 cat solar-linux.prg | sed -e 's/play_wav((*),*,*)/play_wav(($1))\/g/'
114 cat solar-linux.prg | sed -e's/play_wav((*),*,*)/play_wav(($1))\/g/'
115 cat solar-linux.prg | sed -e 's/play_wav((*),*,*)/play_wav(($&))\/g/'
116 cat solar-linux.prg | sed -e 's/play_wav((*),*,*)/play_wav(($&))\/g/'
117 cat solar-linux.prg | sed -e 's/play_wav(($1),*,*)/play_wav(($1))\/g/'
118 cat solar-linux.prg | sed -e 's/play_wav(($1),*,*)/play_wav(($1))\/g/'
119 cat solar-linux.prg | sed -e 's/play_wav(($1),*,*)/play_wav(($1))/g/'
120 cat solar-linux.prg | sed -e 's/play_wav(($1),*,*)/play_wav(($1))\/g/'
121 cat solar-linux.prg | sed -e 's/play_wav(($1),*,*)/play_wav(($1))\/g/'
[...]
ya iba a la desesperada... :- )))))))
Como ves, no es necesario que hagas un cat y se lo pases con un pipe.
> Basta con que pongas el nombre del fichero a editar a continuaci�n de la
> orden que le pasas a sed.
>
> Si quieres guardar los cambios en un fichero, solo tienes que
> redireccionar la salida como siempre, a�adiendo al final �> fichero2�.
>
> Una cosa m�s. Si quieres aprender algo m�s sobre sed, te recomiendo el
> libro �sed & awk� de O'Reilly, en su segunda edici�n. All� te explican
> todo lo que necesitas para dominar sed. Otro recurso tambi�n muy
> interesante es el manual de sed del proyecto GNU, que te puedes
> descargar en varios formatos desde su p�gina oficial.
La verdad es que es la primera vez que me hacia falta el uso de sed,
detodas maneras lo mio con las regexp no tiene remedio, pero en fin, esta
vez he entendido algo mas que otras veces...
Una se�ora explicaci�n la suya ... Much�simas Gracias. :)
Technical Details
Message-ID:
<pan.2002.12.28.02.31.44.999755.8042@bigfoot.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!newsfeed.vmunix.org!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!nsnmrro2-lo.nuria.telefonica-data.net!not-for-mailReferences:
<pan.2002.12.28.00.23.57.689990.8042@bigfoot.com> <3E0D06D8.6080604@privacy.net>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,9a6053025ee6c2ae X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2002-12-27 18:30:11 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!newsfeed.vmunix.org!fu-berlin.de!nsnmpen1-lo.nuria.telefonica-data.net!nsnmrro2-lo.nuria.telefonica-data.net!not-for-mail From: David Ramón Yanes Fariña <a5dy2@bigfoot.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: Sustituir cadenas con sed !! huuyy!! Date: Sat, 28 Dec 2002 02:31:46 +0000 Organization: Free Software fot all Lines: 73 Message-ID: <pan.2002.12.28.02.31.44.999755.8042@bigfoot.com> References: <pan.2002.12.28.00.23.57.689990.8042@bigfoot.com> <3E0D06D8.6080604@privacy.net> NNTP-Posting-Host: 152.red-80-34-12.pooles.rima-tde.net Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: nsnmrro2-gest.nuria.telefonica-data.net 1041042609 6998 80.34.12.152 (28 Dec 2002 02:30:09 GMT) X-Complaints-To: usenet@nsnmrro2-gest.nuria.telefonica-data.net NNTP-Posting-Date: Sat, 28 Dec 2002 02:30:09 +0000 (UTC) User-Agent: Pan/0.11.2 (Unix) X-Comment-To: "Humitsec" <me@privacy.net>