04 Comando SED (Stream Editor)

Published Apr 8, 2023

Linuxsed

El comando SED (Stream Editor) es una herramienta potente y versátil en Linux para procesar y modificar texto en archivos, streams o directamente desde la terminal. Es una herramienta esencial para administradores de sistemas, programadores y entusiastas de Linux que buscan automatizar y simplificar tareas relacionadas con la manipulación de texto.

1. Sintaxis Básica

La estructura general del comando SED es:


sed [opciones] 'script' archivo
  • opciones: Ajustan el comportamiento del comando, como i para modificar archivos directamente.
  • script: Define la acción que queremos realizar (por ejemplo, buscar, reemplazar, eliminar, insertar).
  • archivo: El archivo o entrada que será procesado.

2. Reemplazo de Texto

Reemplazar Todas las Ocurrencias

Para reemplazar todas las ocurrencias de una palabra en un archivo:


sed 's/Linux/Debian/' linux_text.txt

Esto reemplazará la palabra Linux por Debian y mostrará el resultado en la terminal.

Guardar los Cambios en el Archivo

Para aplicar los cambios directamente al archivo, usamos la opción -i:


sed -i 's/Linux/Debian/' linux_text.txt

Reemplazar Solo una Aparición Específica

Podemos reemplazar solo la primera, segunda o n-ésima aparición de una palabra:

  • Primera aparición:

    
    sed 's/Linux/Debian/1' linux_text.txt
    
  • Segunda aparición:

    
    sed 's/Linux/Debian/2' linux_text.txt
    

Reemplazo Insensible a Mayúsculas/Minúsculas

Para ignorar mayúsculas y minúsculas, usamos la opción I al final del comando:


sed 's/linux/Debian/I' linux_text.txt

3. Eliminar Líneas

Eliminar Líneas que Contienen una Palabra Específica

Para eliminar todas las líneas que contienen una palabra específica:


sed '/code/d' linux_text.txt

Eliminar una Línea Específica

Si queremos eliminar una línea en particular (por número):


sed '2d' linux_text.txt

Eliminar un Rango de Líneas

Para eliminar un rango de líneas, usamos la siguiente sintaxis:


sed '2,4d' linux_text.txt

Esto eliminará las líneas 2 a 4.

4. Insertar Texto

Insertar Texto Antes de una Línea Específica

Para insertar una línea antes de una línea específica:


sed '2iEste es un texto insertado' linux_text.txt

La línea indicada (en este caso, la línea 2) se desplazará hacia abajo, y el texto se insertará antes de ella.

5. Agregar Texto

Agregar Texto Después de una Línea Específica

El comando a (append) permite agregar texto después de una línea específica:


sed '2aEsta línea ha sido agregada' linux_text.txt

Nota: Aunque se espera que el texto se agregue al final de la línea indicada, dependiendo del formato del archivo, puede aparecer en una línea nueva justo debajo.

6. Opciones Avanzadas

Reemplazo Global

Para asegurarnos de que todas las ocurrencias en cada línea sean reemplazadas (no solo la primera):


sed 's/Linux/Debian/g' linux_text.txt

Combinar Comandos

Podemos realizar varias operaciones en una sola ejecución separándolas por punto y coma ;:


sed -i 's/Linux/Debian/g; /code/d' linux_text.txt

Esto reemplaza todas las ocurrencias de Linux por Debian y elimina líneas que contienen la palabra code.

Uso de Wildcards

SED admite expresiones regulares para realizar búsquedas avanzadas:

  • Reemplazar palabras que empiezan con una letra específica:

    
    sed 's/L[a-zA-Z]*/Debian/' linux_text.txt
    

7. Procesar Streams y Pipes

SED también puede manipular texto directamente desde un stream:


cat linux_text.txt | sed 's/Linux/Debian/g'

O con comandos más complejos:


grep 'Linux' linux_text.txt | sed 's/Linux/Debian/'

8. Ejercicios Prácticos

Buscar y Reemplazar con Grep y SED

Encuentra líneas que contienen una palabra y reemplaza solo esas líneas:


grep 'Linux' linux_text.txt | sed 's/Linux/Debian/'

Editar Rango de Líneas

Cambiar el texto en un rango específico de líneas:


sed '5,10s/Linux/Debian/g' linux_text.txt

Conclusión

SED es una herramienta fundamental para cualquier usuario de Linux que trabaje con manipulación de texto o automatización. Su capacidad para buscar, reemplazar, eliminar, e insertar texto lo hace ideal para manejar grandes volúmenes de datos. Practica con los comandos básicos y avanza a combinaciones complejas para maximizar su potencial. 🚀

Elprogramadorgt - Blog © 2025