← Blog

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úmero n.

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.