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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

44<br />

patrón <strong>de</strong>l principio <strong>de</strong>l <strong>com</strong>entario (/*), pero <strong>com</strong>o<br />

tanto la barra <strong>com</strong>o el asterisco son meta-caracteres,<br />

es necesario escaparlos con la contrabarra “\”. En<br />

vez <strong>de</strong> agregar texto al final <strong>de</strong>l patrón encontrado,<br />

pue<strong>de</strong> insertarse texto en una línea previa usando<br />

“i” (insert) en vez <strong>de</strong> “a”. Si quisiéramos agregar<br />

una línea antes y otra <strong>de</strong>spués <strong>de</strong>l patrón, po<strong>de</strong>mos<br />

agrupar los <strong>com</strong>andos, encerrándolos entre llaves “{“<br />

y “}”. Claro que aquí hay que tener en cuenta algo que<br />

aclaramos antes: cada <strong>com</strong>ando sed <strong>de</strong>be estar en<br />

una única línea, y eso incluye tanto las llaves <strong>com</strong>o los<br />

<strong>com</strong>andos agrupados en su interior. Para facilitar la<br />

escritura <strong>de</strong> este tipo <strong>de</strong> scripts sed, es conveniente<br />

editarlos y grabarlos, para invocarlos posteriormente<br />

con el switch -f, <strong>com</strong>o hicimos antes.<br />

# Agrega líneas antes y <strong>de</strong>spués <strong>de</strong> un <strong>com</strong>entario<br />

/\/\*/ {<br />

a\<br />

\n<br />

i\<br />

\n<br />

}<br />

echo “/* Comentario <strong>de</strong> código */” | sed -f <strong>com</strong>ent.<br />

sed<br />

/* Comentario <strong>de</strong> código */<br />

Otra posibilidad es cambiar la línea don<strong>de</strong> se encuentre<br />

el patrón con “c” (change) por el texto ingresado a<br />

continuación <strong>de</strong> la or<strong>de</strong>n, o ninguno si queremos<br />

eliminarlo. Para eliminar todas las líneas <strong>de</strong> <strong>com</strong>entario<br />

prefijadas con una doble barra (//) po<strong>de</strong>mos usar:<br />

echo ‘// Comentario <strong>de</strong> código’ | sed ‘/\/\// c\’<br />

Para esto mismo es también útil el <strong>com</strong>ando “d”<br />

(<strong>de</strong>lete) que borra las líneas que coincidan con la<br />

expresión especificada:<br />

sed ‘/ca<strong>de</strong>na_o_expresion_regular/d’<br />

Es <strong>com</strong>ún el empleo <strong>de</strong> la or<strong>de</strong>n “d” en conjunto con<br />

los rangos que vimos antes. Es posible borrar las<br />

primeras 10 líneas <strong>de</strong> un archivo <strong>de</strong> esta manera:<br />

sed ‘1,10d’<br />

ALGUNOS<br />

EJEMPLOS<br />

ÚTILES<br />

Siempre es bueno ver la aplicación <strong>de</strong> lo aprendido<br />

en algo práctico. Aquí van algunos “one-liners”<br />

útiles con sed. Debe tenerse en cuenta que hacen<br />

un uso más avanzado <strong>de</strong> las expresiones regulares<br />

(un terreno <strong>com</strong>plejo y fascinante por su utilidad,<br />

que amerita una nota en sí mismo) que las aquí<br />

mostradas. Por ejemplo, se incluyen los metacaracteres<br />

“^” (que representa el <strong>com</strong>ienzo <strong>de</strong> una<br />

línea) y “$” (que representa el final <strong>de</strong> la misma).<br />

Eliminar el espacio en blanco (espacios y<br />

tabuladores) al principio <strong>de</strong> una línea<br />

sed ‘s/^[ \t]*//’<br />

Í<strong>de</strong>m, pero al final <strong>de</strong> una línea:

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

Saved successfully!

Ooh no, something went wrong!