reemplazo masivo en zonas DNS

Alvaro Herrera alvherre en alvh.no-ip.org
Mie Ago 2 14:10:31 CLT 2006


Miguel Oyarzo O. escribió:
> At 11:38 02-08-2006, you wrote:
> >Miguel Oyarzo O. escribió:

> >En Perl deberia ser trivial, algo como
> >
> >while (<>) {
> >        if (/^(.*\s)(\d+)(\s*;\s*serial)/) {
> >                printf "$1%d%3", $2 + 1;
> >        } else {
> >                print $&;
> >        }
> >}

Me imagino que todo el mundo se dio cuenta del vergonzoso error que hay
en este script, ademas de la mejora obvia que puede hacerse.  Deberia ser

while (<>) {
        if (/^(.*\s)(\d+)(\s*;\s*serial$)/) {
                printf "$1%d$3\n", $2 + 1;
        } else {
                print $_;
        }
}

> programe algo similar ayer en PERL y tambien me resulta, pero yo
> buscaba una herramienta especializada que por ejemplo tome un
> directorio y actualice las seriales sin mas tramite.

Bueno, guardas este script en ~/bin y le pones el siguiente nombre:

herramienta-especializada-en-incrementar-serial

y listo, tienes tu herramienta :-)  Obviamente puedes hacerle mejoras
como que reciba los nombres de archivo como argumento y lo llamarias
asi:

cd /donde/estan/los/archivos
herramienta-especializada-en-incrementar-serial *

o bien

find /donde/estan/los/archivos -type f | xargs herramienta-especializada-en-incrementar-serial

Yo agregaria cosas como un contador para saber cuantas lineas modifico
en un archivo.  Si es distinto de 1 para algun archivo, examinar el
archivo y corregir la expresion regular apropiadamente.

-- 
Alvaro Herrera                  http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"Cómo ponemos nuestros dedos en la arcilla del otro. Eso es la amistad; jugar
al alfarero y ver qué formas se pueden sacar del otro" (C. Halloway en
La Feria de las Tinieblas, R. Bradbury)


Más información sobre la lista de distribución Linux