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.