🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Convertir links

#9992
From: BankHacker
Date: Wed, 10 Apr 2002 05:44
43 lines
2976 bytes
Reemplazo Global de cadenas en ficheros de Linux:

Si en alg�n momento hemos necesitado efectuar miles de sustituciones
de forma autom�tica en Linux, habremos echado de menos una s�la l�nea
de comando que es capaz de realizar esta potente funci�n de un
plumazo, con gran eficacia y elegancia:

	find /rutaficheros/ -name *.txt | xargs perl -npi.bak -e
"s/europe\\\'s living a celebration/europes living a celebration/img"

En este ejemplo, hemos reemplazado la cadena "europe's living a
celebration" por esta otra "europes living a celebration" en todos los
ficheros con extensi�n .txt del directorio /rutaficheros/.

Para conseguir este efectuo de reemplazo global, hemos utilizado los
programas find y perl en combinaci�n mediante xargs. find nos localiza
los ficheros sobre los que realizar los reemplazos, miestras que perl
lo utilizamos para efectuar sustituciones por medio de expresiones
regulares. Los par�metros que le pasamos a perl (-npi.bak), nos
permiten procesar l�nea a l�nea los ficheros de texto sobre los que
realizamos el reemplazo y guardar un fichero backup de cada fichero
que se haya modificado, por si acaso. El par�metro -e es necesario
para que el int�rprete de perl ejecute las instrucciones
entrecomilladas que lleva a continuaci�n. Igual que perl, podr�amos
haber utilizado otros lenguajes m�s primitivos como sed. sed 
seguramente estar� disponible en otras variedades de Unix en las que
quiz� no tengamos perl, aunque en la mayor�a de los Linux, s� que
encontramos perl.

Es importante tener en cuenta que los caracteres especiales hay que
precederlos con barras invertidas, y tener cuidado con el uso de las
comillas simples y dobles en las expresiones. As�, por ejemplo, si
quisieramos reemplazar la cadena \' tal cual, por ' tendriamos el
siguiente comando:
	
	find /rutaficheros/ -name *.txt | xargs perl -npi.bak -e
"s/\\\'/'/img"

mientras que para reemplazar \" por " tendriamos que ejecutar este
otro:

	find /rutaficheros/ -name *.txt | xargs perl -npi.bak -e
's/\\\"/"/img'
Technical Details
Message-ID: <4a94d27.0204092144.24669305@posting.google.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!postnews1.google.com!not-for-mail
References: <ps7s8a.0i8.ln@127.0.0.1> <slrnab3m07.pm3.marmolejo@porta.til> <a8ssni$c0p$1@news.unizar.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,ec9cf126dca3551c
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2002-04-09 22:44:19 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!postnews1.google.com!not-for-mail
From: webmaster@bankhacker.com (BankHacker)
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Convertir links
Date: 9 Apr 2002 22:44:18 -0700
Organization: http://groups.google.com/
Lines: 43
Message-ID: <4a94d27.0204092144.24669305@posting.google.com>
References: <ps7s8a.0i8.ln@127.0.0.1> <slrnab3m07.pm3.marmolejo@porta.til> <a8ssni$c0p$1@news.unizar.es>
NNTP-Posting-Host: 62.37.162.165
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: posting.google.com 1018417459 10845 127.0.0.1 (10 Apr 2002 05:44:19 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: 10 Apr 2002 05:44:19 GMT