Editar texto en la consola con sed

última modificación:

Cuando se necesita hacer un cambio en un archivo (corregir una palabra, borrar líneas que cumplan un patrón) sin abrir un editor, sed es lo que necesitas. Es especialmente útil en scripts y combinado con otros comandos mediante tuberías.

La operación más habitual es la sustitución. Para reemplazar la primera aparición de una cadena en cada línea:

sed 's/antiguo/nuevo/' archivo.txt

Para reemplazar todas las apariciones en cada línea, añadimos el modificador g:

sed 's/antiguo/nuevo/g' archivo.txt

Por defecto, sed muestra el resultado en pantalla sin modificar el archivo. Para editar el archivo directamente usamos -i:

sed -i 's/antiguo/nuevo/g' archivo.txt

Para eliminar las líneas que contienen un patrón:

sed '/patron/d' archivo.txt

sed acepta expresiones regulares, lo que lo hace muy potente. Por ejemplo, para eliminar las líneas en blanco de un archivo:

sed '/^$/d' archivo.txt

También se puede combinar con grep en una tubería. Por ejemplo, para extraer solo las líneas con errores 404 de un log y reemplazar en ellas la palabra GET por get:

grep "404" /var/log/apache2/access.log | sed 's/GET/get/g'

Antes de editar archivos importantes con -i, conviene probar el comando sin esa opción para verificar que el resultado es el esperado.