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.
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 buscarnuevo es el texto de reemplazoPara 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
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
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
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
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
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
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
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
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'
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.
Los juegos gratis de Amazon Prime Gaming representan un atractivo significativo para los suscriptores de…
Si eres un amante de los videojuegos, estás de suerte. Hasta el 20 de noviembre…
La computación cuántica acaba de dar un salto gigante. John M. Martinis, recién galardonado con…
La biografía más vendida del cofundador de Apple, Steve Jobs; escrita por uno de los…
Hubo un tiempo en el que la “seguridad en el hogar” significaba confiar en un…
Elon Musk vuelve a romper todos los esquemas. Los accionistas de Tesla acaban de aprobar…