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
ssignifica substitute (sustituir)viejoes el texto a buscarnuevoes 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.
Artículos Relacionados
Descubre más desde CIBERED
Suscríbete y recibe las últimas entradas en tu correo electrónico.

