Sed - Editor de Flujo
Apuntes y comandos de Sed - Editor de Flujo para Linux.
Guía de Repaso: sed (Stream Editor)
sed es un editor de flujo (stream editor) que procesa texto línea por línea. Permite realizar sustituciones, borrados, inserciones y transformaciones de manera no interactiva, lo que lo hace ideal para automatizar tareas de manipulación de texto.
1. Sintaxis General
sed 'comando' archivo.txt
-
Comando más común:
s/patrón/reemplazo/-
s→ indica sustitución. -
patrón→ texto a buscar (expresiones regulares soportadas). -
reemplazo→ texto que sustituirá al patrón. -
Modificadores:
- sin modificador → solo la primera ocurrencia por línea.
g→ global, reemplaza todas las ocurrencias de la línea.número→ reemplaza solo la ocurrencia númeron.
-
Ejemplos:
sed 's/ex/ex1/' text.txt # sustituye la primera ocurrencia por línea
sed 's/ex/ex1/g' text.txt # sustituye todas las ocurrencias por línea
sed 's/ex/ex1/3' text.txt # sustituye solo la tercera ocurrencia por línea
2. Reemplazos Condicionados
Podemos condicionar la sustitución a que la línea cumpla con un patrón previo.
sed '/ee/ s/Suite/Ste/g' sample.txt
# Solo en líneas que contengan 'ee', reemplaza 'Suite' por 'Ste' en todas sus ocurrencias
3. Líneas Específicas
- Última línea:
sed '$s/Suite/Ste/' sample.txt
# Reemplaza solo en la última línea
- Eliminar líneas:
sed '/Suite/d' sample.txt
# Elimina todas las líneas que contienen 'Suite'
- Rango de líneas:
sed '2,5d' sample.txt
# Borra de la línea 2 a la 5
4. Inserciones y Modificaciones de Final de Línea
- Agregar texto al final de cada línea:
sed 's/$/\n/' sample.txt
# Añade un salto de línea (nueva línea) al final
- Reemplazar caracteres y dividir líneas:
sed 's/,/\n/g' sample.txt
# Reemplaza comas con saltos de línea
- Combinando expresiones:
sed -e 's/$/\n/g' -e 's/,/\n/g' sample.txt
# Añade salto de línea al final y luego reemplaza comas con saltos de línea
5. Ejecución en Cadena (Pipes)
Se pueden encadenar múltiples comandos sed con pipes:
sed 's/$/\n/g' sample.txt | sed 's/,/\n/g'
Esto es equivalente a usar -e en una sola ejecución.
6. Guardar Resultados
Por defecto, sed muestra los cambios en stdout.
Para sobrescribir el archivo directamente:
sed -i 's/Suite/Ste/g' sample.txt
-i→ edición en el archivo (in-place).- En algunos sistemas (BSD/macOS) es necesario
-i ''.
7. Ejemplos Útiles de Producción
- Eliminar espacios al inicio de cada línea:
sed 's/^[ \t]*//' file.txt
- Eliminar espacios al final de cada línea:
sed 's/[ \t]*$//' file.txt
- Reemplazar múltiples patrones con expresiones regulares:
sed -E 's/(foo|bar)/baz/g' file.txt
8. Resumen Rápido de Opciones Clave
s/…/…/→ sustitución.g→ reemplazo global./patrón/d→ borrar líneas.número,número→ rango de líneas.$→ última línea.-i→ edición in-place.-e→ múltiples expresiones.