Hoy, se me ocurrió que sería buena idea actualizar 120 zonas de dns que tengo.
Quería asegurarme de que mis DNS esclavos tuvieran la última versión de mis zonas. Así que, sed me ayudó:
sed -i s/[[:digit:]]\\{10\\}/2011012000/g /var/named/*.db
Éste código buscó las cadenas de dígitos de 10 caracteres y los substituyó por otra cadena de 10 caracteres.
Problema resuleto.
Una explicación breve:
[[:digit:]] representa los dígitos del 0-9
\{10} le dice que sean 10 instancias de dígitos del 0-9
hay dobles \ porque son necesarias en bash para escapar los \. El código de la expresión regular original sería:
s/[:digit:]\{10\}/2011012000/g
Pero, como bash necesita que escape los \
s/[[:digit:]]\\{10\\}/2011012000/g
La neta, lo de la [[ no lo entiendo… pero así jaló. Habrá que esperar comentarios de los aborígenes wwwnautas.
Pingback: Tweets that mention HowTo: Cómo usar sed para actualizar mis zonas de DNS | Renich's Blog -- Topsy.com
http://tldp.org/LDP/abs/html/x16775.html busca por “POSIX Character Classes” ahi viene porque los double brackets.
Util one liner por cierto =)