Article View: es.comp.os.linux.programacion
Article #9992Re: Convertir links
From: BankHacker
Date: Wed, 10 Apr 2002 05:44
Date: Wed, 10 Apr 2002 05:44
43 lines
2976 bytes
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-mailReferences:
<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