de Dattatec.com SRL. - Pixels & Code
de Dattatec.com SRL. - Pixels & Code
de Dattatec.com SRL. - Pixels & Code
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: