sed es un “editor de textos” para el filtrado y la transformación de textos. Escribo “editor de texto” entre comillas pues en realidad sed no trabaja con cadenas de caracteres sino con “flujos”, la diferencia con los editores de textos clásicos (interactivos) es que sed acepta como entrada estándar un archivo o cualquier otro stream; resultado que es procesado y devuelto a la salida estándar (vea más acerca de stdin, stdout y stderr aquí)
Veamos un ejemplo muy sencillito:
hola
maldito
mundo
hola
mundo
No hace mucha explicación ¿no?, el comando d recibe el número de línea a eliminar. Esto es muy sencillo y es el ejemplo más básico del uso de sed; simplemente para que te vayas amigando.
Ahora veamos un ejemplo similar, pero reemplazando palabras:
hola
bendito
mundo
Ahora usamos el comando s, éste recibe una cadena a buscar y una cadena por la que se reemplazarán las coincidencias en todos sus archivos.
Finalmente, para cerrar esta breve introducción a sed veamos un ejemplito propuesto en Feelinfo ¿Cómo reemplazar textos en varios archivos en Linux?:
Sabiendo que “sed -i ‘/s/palabra-vieja/palabra-nueva/g’ *.txt” reemplaza todas las ocurrencias de la palabra vieja por palabra nueva en todos los archivos:
sed -i ‘s/Manolo/Manuel/g’ *.txt
sed -i ‘s/Nacho/Ignacio/g’ *.txt
sed -i ‘s/Inma/Inmaculada/g’ *.txt
Bien, esto es todo por ahora. Una observación para mi como para ustedes, no nos creamos que sed se limita a solo esto… manipulando flujos podemos dominar el mundo
(¿no me crees? mira este rudimentario tetris escrito con sed, sedtris.sed)



Felinfo
febrero 22, 2010
Hola Luciano.
Gracias por referenciar a mi blog. Yo soy seguidor del tuyo desde hace mucho tiempo.
Saludos!
Fede
septiembre 19, 2011
Bueno asi con palabras normales todo muuy bien, pero que tal si uno quiere reemplazar texto en el cual vienen simbolos como por ejemplo una diagonal (/) o simbolos como el mayor que y el menor que () como puedo hacer para que el sed no tome las diagonales en un texto como si fueran parte de su comando y las tome como parte del texto a reemplazar, por ejemplo, quiero reemplazar la cadena de texto siguiente:
Vivimos en/ sociedad
por el texto
EEEEEEEEEEEE
segun yo el comando seria asi:
sed ‘s/Vivimos en/ /EEEEEEEEEEEEEEEEE/’ texto1
pero me devuelve el error:
sed: -e expresión #1, caracter 21: unknown option to `s’
y si lo pongo asi:
sed -e ‘s/Vivimos en/ /EEEEEEEEEEEEEEEEE/’ texto1
Me saca lo mismo, ayuda por favor