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
-
Sintaxis Básica de sed:
sed [opciones] 'comando' archivo
opciones
: Modificadores que alteran el comportamiento desed
.comando
: La operación quesed
debe realizar.archivo
: El archivo de texto sobre el cual se aplicará el comando.
-
Comandos Comunes de sed:
s/patrón/reemplazo/
: Sustituye elpatrón
por elreemplazo
.d
: Elimina líneas que coinciden con un patrón.i\texto
: Insertatexto
antes de una línea específica.a\texto
: Añadetexto
después de una línea específica.p
: Imprime líneas que coinciden con un patrón.
Ejemplos Prácticos
- Sustitución de Texto
Ejemplo Básico
Explicación:
s/Mundo/Bash/
: Sustituye la palabra "Mundo" por "Bash".- Salida:
Hola Bash
Ejemplo en un Archivo
Explicación:
s/error/ERROR/
: Sustituye la palabra "error" por "ERROR" en cada línea dearchivo.txt
.
- Eliminación de Líneas
Ejemplo Básico
Explicación:
/Línea 2/d
: Elimina las líneas que contienen "Línea 2".- Salida:
Línea 1 Línea 3
- Inserción y Adición de Texto
Insertar Texto Antes de una Línea
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
Explicación:
1a\Fin
: Añade "Fin" después de la primera línea.- Salida:
Línea 1 Fin Línea 2
- Imprimir Líneas que Coinciden con un Patrón
Ejemplo Básico
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
.
Ejercicio 2: Eliminación de Líneas
Instrucción: Elimina todas las líneas que contienen la palabra "borrar" en el archivo 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
.
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
.
Soluciones
Solución al Ejercicio 1
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
Explicación: El comando /borrar/d
elimina todas las líneas que contienen la palabra "borrar".
Solución al Ejercicio 3
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
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.
Curso de Programación en Bash
Módulo 1: Introducción a Bash
- ¿Qué es Bash?
- Configurando tu Entorno
- Navegación Básica en la Línea de Comandos
- Entendiendo el Shell
Módulo 2: Comandos Básicos de Bash
- Operaciones con Archivos y Directorios
- Comandos de Procesamiento de Texto
- Permisos y Propiedad de Archivos
- Redirección y Tuberías
Módulo 3: Fundamentos de Scripting
Módulo 4: Scripting Intermedio
Módulo 5: Técnicas Avanzadas de Scripting
- Operaciones Avanzadas con Archivos
- Gestión de Procesos
- Manejo de Errores y Depuración
- Expresiones Regulares
Módulo 6: Trabajando con Herramientas Externas
Módulo 7: Automatización y Programación
Módulo 8: Mejores Prácticas y Optimización
- Escribiendo Código Legible
- Optimizando Scripts en Bash
- Consideraciones de Seguridad
- Control de Versiones con Git