9 Mejores fórmulas de editar texto con el comando SED en Linux

Sed, el editor de flujo de Linux, es una herramienta potente para manipular texto directamente desde la línea de comandos.

Desde reemplazos simples hasta transformaciones complejas, aquí tienes nueve formas de usar sed para editar archivos de texto.

1. Buscar y reemplazar texto

El uso más común de sed es reemplazar texto.

La sintaxis básica es:

sed 's/viejo/nuevo/' archivo.txt
  • s significa substitute (sustituir)
  • viejo es el texto a buscar
  • nuevo es el texto de reemplazo

Para reemplazar todas las ocurrencias en cada línea, añade g:

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

También puedes reemplazar texto en líneas específicas o según patrones:

sed 's/viejo/nuevo/' archivo.txt          # reemplaza la primera ocurrencia por línea
sed 's/viejo/nuevo/g' archivo.txt         # reemplaza todas las ocurrencias
sed '10s/viejo/nuevo/' archivo.txt        # línea 10
sed '10,20s/viejo/nuevo/' archivo.txt     # líneas 10 a 20
sed '/ERROR/s/viejo/nuevo/g' archivo.txt  # solo líneas con ERROR

2. Insertar, agregar y eliminar contenido

Insertar antes de una línea:

sed '3i
# Nuevo ajuste
ENABLE_FEATURE=true' config.conf

Agregar después de una línea:

sed '3a
Texto agregado' archivo.txt

Reemplazar toda una línea:

sed '/^version=/cversion=2.0.0' config.conf

Eliminar líneas:

sed '3d' archivo.txt        # eliminar línea 3
sed '5,10d' archivo.txt     # eliminar líneas 5 a 10
sed '/DEBUG/d' logarchivo.txt # eliminar todas las líneas con DEBUG

3. Mostrar y extraer contenido

Usa -n para suprimir la salida por defecto y p para imprimir:

sed -n '5p' archivo.txt          # línea 5
sed -n '15,20p' archivo.txt      # líneas 15 a 20
sed -n '/ERROR/p' archivo.txt    # líneas que contienen ERROR
sed -n '/START/,/END/p' archivo.txt # entre START y END
sed -n '/ERROR/!p' logarchivo.txt   # todo excepto ERROR

4. Modificar archivos directamente con respaldo

Editar en el archivo original:

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

Crear un respaldo antes de editar:

sed -i.bak 's/viejo/nuevo/g' archivo.txt

Respaldos con fecha:

sed -i.$(date +%Y%m%d) 's/foo/bar/g' config.conf

5. Aplicar varios cambios a la vez

Combina múltiples ediciones:

sed -i -e 's/apple/orange/g' -e 's/pear/grape/g' archivo.txt
sed 's/red/blue/g; s/apple/orange/g; /draft/d' datos.txt

6. Automatizar ediciones con scripts

Crea un archivo edits.sed:

s/apple/orange/g
s/pear/grape/g
/^#/d

Aplica los cambios a cualquier archivo:

sed -i -f edits.sed archivo.txt

7. Usar expresiones regulares (regex)

Regex permite buscar patrones en lugar de texto literal:

sed -E 's/^([A-Za-z]+)[[:space:]]+([A-Za-z]+)$/2, 1/' nombres.txt

Ejemplo de salida:

John Doe   -> Doe, John
Jane Smith -> Smith, Jane

Otros usos:

sed -E 's/b([0-9])b/01/g' numeros.txt     # agregar cero inicial
sed -E 's/[[:space:]]+$//' archivo.txt          # eliminar espacios al final

8. Limpiar y formatear archivos de texto

Eliminar retornos de carro de Windows:

sed -i 's/r$//' archivo.txt

Convertir tabs a espacios:

sed -E 's/t/ /g' archivo.txt

Limpiar espacios y líneas vacías:

sed -E '/^[[:space:]]*$/d' archivo.txt
sed -E 's/[[:space:]]+$//' archivo.txt
sed -E 's/[[:space:]]+/ /g' archivo.txt

9. Combinar sed con otros comandos

Limitar la salida de ps aux:

ps aux | sed -n '1,5p'

Extraer información con grep y sed:

grep 'ERROR' logarchivo | sed -E 's/.*[([0-9-: ]+)].*/1/p'

Conclusión

Como has podido ver, Sed es un editor poderoso de línea de comandos que con práctica diaria, puede reemplazar tareas manuales y acelerar tu flujo de trabajo en Linux.


Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Deja un comentario