de Dattatec.com SRL. - Pixels & Code
de Dattatec.com SRL. - Pixels & Code
de Dattatec.com SRL. - Pixels & Code
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
40<br />
TAYLOR, SIEMPRE<br />
PRESENTE<br />
Pero primero, recor<strong>de</strong>mos el enunciado <strong>de</strong>l misterioso<br />
Taylor, que <strong>com</strong>o ya mencionamos en la primera<br />
parte, <strong>de</strong>ben leerse <strong>de</strong> abajo hacia arriba, es <strong>de</strong>cir,<br />
en or<strong>de</strong>n <strong>de</strong> <strong>com</strong>plejidad <strong>de</strong>creciente.<br />
“Nunca programe en ‘C’ si pue<strong>de</strong> hacerlo en ‘awk’;<br />
Nunca lo haga en ‘awk’ si ‘sed’ pue<strong>de</strong> manejarlo;<br />
Nunca use ‘sed’ cuando ‘tr’ pue<strong>de</strong> hacer el trabajo;<br />
Nunca invoque ‘tr’ cuando ‘cat’ sea suficiente;<br />
Evite usar ‘cat’ siempre que sea posible.”<br />
En nuestro “episodio anterior” aprendimos las<br />
distintas posibilida<strong>de</strong>s que nos ofrecen cat y tr,<br />
a<strong>de</strong>más <strong>de</strong> cubrir otras herramientas que permiten<br />
automatizar el tratamiento <strong>de</strong> textos, <strong>com</strong>o cut.<br />
Siguiendo este or<strong>de</strong>n, entonces, le toca el turno a<br />
sed. Escrito originalmente por Lee McMahon durante<br />
la década <strong>de</strong>l 70, cuando se <strong>de</strong>sempeñaba en los<br />
Bell Labs, cuna <strong>de</strong>l UNIX original, ha sido portado a<br />
una infinidad <strong>de</strong> plataformas, aunque sigue siendo<br />
un <strong>com</strong>ponente central <strong>de</strong> los clones <strong>de</strong> UNIX,<br />
<strong>com</strong>o GNU/Linux y *BSD. Inclusive, se dice que el<br />
gran Larry Wall, experto en sed, se inspiró en esta<br />
herramienta y en awk -que veremos en nuestra<br />
próxima entrega- al crear Perl, un lenguaje <strong>de</strong><br />
scripting extremadamente po<strong>de</strong>roso y muy popular<br />
en nuestros tiempos, particularmente entre los<br />
sysadmins.<br />
USOS SIMPLES<br />
DE SED<br />
La mayoría <strong>de</strong> los casos en los que suele utilizarse<br />
sed son sencillos, y por lo tanto pue<strong>de</strong>n enten<strong>de</strong>rse<br />
a simple vista. No obstante, este minilenguaje es lo<br />
suficientemente <strong>com</strong>plejo y po<strong>de</strong>roso <strong>com</strong>o para que un<br />
script más largo y <strong>com</strong>plicado sea lo suficientemente<br />
críptico para que sólo un usuario avanzado <strong>de</strong>l mismo<br />
pueda interpretarlo rápidamente. Para colmo, la<br />
documentación más a mano (las páginas <strong>de</strong> man) no<br />
es <strong>de</strong> lo más accesible y <strong>com</strong>pleta. Por lo general, en<br />
el trabajo con sed, <strong>com</strong>o dijo un gran poeta, “se hace<br />
camino al andar”.<br />
El uso más <strong>com</strong>ún <strong>de</strong> sed es equivalente a la<br />
función “Buscar y Reemplazar” que ofrecen muchos<br />
editores <strong>de</strong> texto. La diferencia es que con ellos<br />
hay que hacerlo en forma interactiva, mientras que<br />
sed (<strong>com</strong>o casi todo este tipo <strong>de</strong> herramientas <strong>de</strong><br />
consola en UNIX) está pensado para operar en forma<br />
automatizada. Para hacer un “search & replace” <strong>de</strong><br />
sed, entonces, escribimos:<br />
sed s/ca<strong>de</strong>na_a_reemplazar/nueva_ca<strong>de</strong>na/<br />
archivo_original.txt > archivo_nuevo.txt<br />
La “/” (barra, o en inglés “slash”), que se emplea <strong>com</strong>o<br />
<strong>de</strong>limitador, es solamente una convención, ya que<br />
sed toma al caracter que sigue inmediatamente a la<br />
“s” (<strong>com</strong>ando que or<strong>de</strong>na el reemplazo) <strong>com</strong>o tal. Si<br />
se preten<strong>de</strong> reemplazar una ca<strong>de</strong>na que contenga la