~/docs /DevOps/sed
DevOps
sed
Imported from Notion: sed
updated:: 2026.07.10
Qué resuelve
sed permite buscar y reemplazar texto desde la terminal. Esta página se centra en reemplazos directos, pruebas previas y cambios seguros con backup.
[!NOTE] ⚠️
sed -imodifica archivos directamente. Prueba primero sin-io usa backup automático.
Uso rápido
Ver cómo quedaría sin modificar
sed 's|TEXTO_VIEJO|TEXTO_NUEVO|' archivo
Modificar el archivo directamente
sed -i 's|TEXTO_VIEJO|TEXTO_NUEVO|' archivo
Modificar creando backup
sed -i.bak 's|TEXTO_VIEJO|TEXTO_NUEVO|' archivo
Esto deja una copia archivo.bak.
Desglose
-
sed: editor de flujo. -
-i: edita in-place. -
-i.bak: edita in-place y conserva backup. -
s: sustitución. -
Delimitadores: separan patrón y reemplazo. En los ejemplos se usa
|para evitar escapar rutas con/. -
g: reemplaza todas las coincidencias de cada línea.
Ejemplos
Reemplazo simple
sed -i 's|Path.home() / "farmer_core"|Path.home() / "farmer_core_1"|' farmer.py
Reemplazar todas las coincidencias de cada línea
sed -i 's|localhost|127.0.0.1|g' config.txt
Reemplazar en varios archivos
for d in ~/farmer_mio_*; do
sed -i.bak 's|Path.home() / "farmer_core"|Path.home() / "farmer_core_1"|' "$d/farmer.py"
done
Reemplazar en un rango de carpetas
for i in {1..6}; do
sed -i.bak 's|Path.home() / "farmer_core"|Path.home() / "farmer_core_1"|' ~/farmer_mio_"$i"/farmer.py
done
Validar cambios
git diff
grep -R 'farmer_core_1' ~/farmer_mio_*
Si no usas Git:
diff -u archivo.bak archivo
Errores comunes
-
Ejecutar
-isin prueba previa. -
Usar
/como delimitador cuando el texto contiene rutas. -
Olvidar comillas y dejar que la shell expanda caracteres especiales.
-
No usar
gcuando hay varias coincidencias por línea. -
Aplicar un patrón demasiado amplio a muchos archivos.
Checklist final
-
Probé el reemplazo sin
-i. -
Elegí delimitador cómodo, normalmente
|. -
Usé
-i.baksi el cambio era sensible. -
Verifiqué con
git diff,grepodiff. -
Eliminé backups solo después de confirmar el resultado.
- EOF -