El comando sed (Stream Editor) es una herramienta poderosa en Bash para la manipulación y transformación de texto. sed permite realizar operaciones como búsqueda y reemplazo, inserción, eliminación y otras modificaciones en archivos de texto o flujos de datos.

Conceptos Clave

  1. Sintaxis Básica de sed:

    sed [opciones] 'comando' archivo
    
    • opciones: Modificadores que alteran el comportamiento de sed.
    • comando: La operación que sed debe realizar.
    • archivo: El archivo de texto sobre el cual se aplicará el comando.
  2. Comandos Comunes de sed:

    • s/patrón/reemplazo/: Sustituye el patrón por el reemplazo.
    • d: Elimina líneas que coinciden con un patrón.
    • i\texto: Inserta texto antes de una línea específica.
    • a\texto: Añade texto después de una línea específica.
    • p: Imprime líneas que coinciden con un patrón.

Ejemplos Prácticos

  1. Sustitución de Texto

Ejemplo Básico

echo "Hola Mundo" | sed 's/Mundo/Bash/'

Explicación:

  • s/Mundo/Bash/: Sustituye la palabra "Mundo" por "Bash".
  • Salida: Hola Bash

Ejemplo en un Archivo

sed 's/error/ERROR/' archivo.txt

Explicación:

  • s/error/ERROR/: Sustituye la palabra "error" por "ERROR" en cada línea de archivo.txt.

  1. Eliminación de Líneas

Ejemplo Básico

echo -e "Línea 1\nLínea 2\nLínea 3" | sed '/Línea 2/d'

Explicación:

  • /Línea 2/d: Elimina las líneas que contienen "Línea 2".
  • Salida:
    Línea 1
    Línea 3
    

  1. Inserción y Adición de Texto

Insertar Texto Antes de una Línea

echo -e "Línea 1\nLínea 2" | sed '1i\Inicio'

Explicación:

  • 1i\Inicio: Inserta "Inicio" antes de la primera línea.
  • Salida:
    Inicio
    Línea 1
    Línea 2
    

Añadir Texto Después de una Línea

echo -e "Línea 1\nLínea 2" | sed '1a\Fin'

Explicación:

  • 1a\Fin: Añade "Fin" después de la primera línea.
  • Salida:
    Línea 1
    Fin
    Línea 2
    

  1. Imprimir Líneas que Coinciden con un Patrón

Ejemplo Básico

echo -e "Línea 1\nLínea 2\nLínea 3" | sed -n '/Línea 2/p'

Explicación:

  • -n: Suprime la salida automática.
  • /Línea 2/p: Imprime solo las líneas que contienen "Línea 2".
  • Salida: Línea 2

Ejercicios Prácticos

Ejercicio 1: Sustitución de Texto

Instrucción: Sustituye todas las ocurrencias de "foo" por "bar" en el archivo texto.txt.

sed 's/foo/bar/g' texto.txt

Ejercicio 2: Eliminación de Líneas

Instrucción: Elimina todas las líneas que contienen la palabra "borrar" en el archivo datos.txt.

sed '/borrar/d' datos.txt

Ejercicio 3: Inserción de Texto

Instrucción: Inserta la línea "Inicio del Archivo" antes de la primera línea del archivo log.txt.

sed '1i\Inicio del Archivo' log.txt

Ejercicio 4: Adición de Texto

Instrucción: Añade la línea "Fin del Archivo" después de la última línea del archivo log.txt.

sed '$a\Fin del Archivo' log.txt

Soluciones

Solución al Ejercicio 1

sed 's/foo/bar/g' texto.txt

Explicación: La opción g al final del comando s/foo/bar/ asegura que todas las ocurrencias de "foo" en cada línea sean reemplazadas por "bar".

Solución al Ejercicio 2

sed '/borrar/d' datos.txt

Explicación: El comando /borrar/d elimina todas las líneas que contienen la palabra "borrar".

Solución al Ejercicio 3

sed '1i\Inicio del Archivo' log.txt

Explicación: El comando 1i\Inicio del Archivo inserta "Inicio del Archivo" antes de la primera línea del archivo log.txt.

Solución al Ejercicio 4

sed '$a\Fin del Archivo' log.txt

Explicación: El comando $a\Fin del Archivo añade "Fin del Archivo" después de la última línea del archivo log.txt.

Conclusión

En esta sección, hemos explorado el uso de sed para la manipulación de texto en Bash. Hemos cubierto comandos básicos como sustitución, eliminación, inserción y adición de texto, así como la impresión de líneas que coinciden con un patrón. Con estos conocimientos, puedes empezar a utilizar sed para realizar transformaciones de texto más complejas y automatizar tareas de procesamiento de texto en tus scripts de Bash.

© Copyright 2024. Todos los derechos reservados