16.05.2013 Views

de Dattatec.com SRL. - Pixels & Code

de Dattatec.com SRL. - Pixels & Code

de Dattatec.com SRL. - Pixels & Code

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!