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.
arra (<strong>com</strong>o una ruta <strong>de</strong> archivos en UNIX), es buena<br />
i<strong>de</strong>a optar por otro separador, aunque muchos optan<br />
por usar el caracter <strong>de</strong> escape “\”. Otras elecciones<br />
<strong>com</strong>unes <strong>com</strong>o separador son el un<strong>de</strong>rscore “_”, el pipe<br />
“|”, o los dos puntos “:”.<br />
La expresión <strong>de</strong>l ejemplo anterior, tal <strong>com</strong>o fue escrita,<br />
sólo reemplaza la primera ocurrencia <strong>de</strong> la ca<strong>de</strong>na a<br />
reemplazar especificada. Si se quiere sustituir todas las<br />
ocurrencias, <strong>de</strong>be indicarse que la or<strong>de</strong>n “s” es global,<br />
agregando luego <strong>de</strong> la ca<strong>de</strong>na nueva un <strong>de</strong>limitador y la<br />
letra “g”, <strong>de</strong> esta manera:<br />
sed ‘s/ca<strong>de</strong>na_a_reemplazar/nueva_ca<strong>de</strong>na/g’<br />
archivo_original.txt > archivo_nuevo.txt<br />
Aquí también encerramos la expresión entre <strong>com</strong>illas<br />
simples, algo imprescindible si es que la ca<strong>de</strong>na<br />
a reemplazar o la nueva contienen caracteres<br />
especiales, <strong>com</strong>o el espacio en blanco. Para hacer<br />
una prueba sin necesidad <strong>de</strong> contar con un archivo<br />
<strong>de</strong> texto, po<strong>de</strong>mos hacerlo con el <strong>com</strong>ando “echo” y<br />
un pipe, tal <strong>com</strong>o vimos la vez pasada:<br />
echo «Hola Juan» | sed ‘s/Hola/Buen día/’<br />
Da <strong>com</strong>o resultado:<br />
Buen día Juan<br />
Entre los diversos caracteres especiales <strong>de</strong> las<br />
expresiones, <strong>com</strong>o aquellos empleados para especificar<br />
las expresiones regulares (paréntesis, corchetes,<br />
asterisco, punto, etc.) se <strong>de</strong>staca el ampersand “&”,<br />
que representa la ca<strong>de</strong>na encontrada en base a la<br />
expresión <strong>de</strong> búsqueda. Esto pue<strong>de</strong> ser muy útil. Es<br />
fácil reemplazar “hola” por “_hola_” cuando conocemos<br />
exactamente la palabra que estamos buscando, pero<br />
¿qué ocurre cuando <strong>de</strong>sconocemos la totalidad <strong>de</strong> la<br />
ca<strong>de</strong>na a procesar? Veamos:<br />
echo ‹agrego un<strong>de</strong>rscores› | sed ‹s/[a-z]*/_&_/g›<br />
_agrego_ _un<strong>de</strong>rscores_<br />
Si alguno <strong>de</strong> los caracteres especiales que se emplean<br />
para especificar la expresión regular <strong>de</strong> búsqueda se<br />
encuentra <strong>de</strong>ntro <strong>de</strong> la ca<strong>de</strong>na a matchear, <strong>de</strong>bemos<br />
“escaparlo” con una contrabarra “\” (backslash), <strong>com</strong>o<br />
se hace en muchos lenguajes emparentados con UNIX<br />
(<strong>com</strong>o los scripts <strong>de</strong> shell) para que sed <strong>com</strong>prenda<br />
que nos estamos refiriendo literalmente a ese caracter,<br />
y no lo intreprete <strong>com</strong>o un caracter especial:<br />
echo ‹agrego [un<strong>de</strong>rscores]› | sed ‹s/\[[az]*\]/_&_/›<br />
agrego _[un<strong>de</strong>rscores]_<br />
Noten el uso <strong>de</strong> la contrabarra para escapar los<br />
corchetes, provocando que <strong>de</strong> las dos palabras<br />
que <strong>com</strong>ponen el string a procesar solamente sea<br />
41