🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #8196

Re: Sustituir cadenas con sed !! huuyy!!

#8196
From: David Ramón Yanes Fariña
Date: Sat, 28 Dec 2002 02:31
73 lines
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-mail
References: <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>